转载自:https://blog.csdn.net/u014292162/article/details/52277756

IOC

1小案例

将对象的依赖交给配置文件来配置(配置文件的名字是可以任意的,不过一般写一个比较规范的名字),这里使用IOC特性对类中的属性进行初始化

使用junit来进行测试单元测试(注意:单元测试一些老的版本可能会存在bug,如calssNotFound...,建议下载新的junit版本)

User.java 用户bean类

 package com.xxx.spring.ioc.bean;

 import java.io.Serializable;

 public class User implements Serializable {
private static final long serialVersionUID = 1L;
private int id; //用户编号
private String name; //用户名
private int age; //用户年龄
private String gender; //用户性别
public User() {}
public User(int id, String name, int age, String gender) {
super();
this.id = id;
this.name = name;
this.age = age;
this.gender = gender;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age
+ ", gender=" + gender + "]";
} }

spring中bean的配置:

  这里说的Spring中的Bean概念,跟我们写JavaBean类不是一个概念,Spring中所有配置在xml中或使用spring来初始化的都叫Bean(dao,service,javaBean,Controller...)

  IOC控制反转,控制权的转移,应用程序本身不负责依赖对象的创建和维护,而是有外部容器的创建和维护

  什么被反转了呢——————》获的对象的过程被反转了,依赖注入

set.xml配置文件初始化User.java中的相关属性,可以使用junit对其进行单元测试

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<!-- name中的user可以取别名 scope="prototype" 或singleton="false"可以设置为非单例模式 -->
<bean name="user,user2" class="com.xxx.spring.ioc.bean.User">
<property name="id" value="1"/>
<property name="name" value="tom"/>
<property name="age" value="20"/>
<property name="gender" value="male"/>
</bean> </beans>

测试:

     @Test
public void test2() {
BeanFactory factory = new ClassPathXmlApplicationContext("com/xxx/spring/chap1/set.xml");
//User user = (User) factory.getBean("user");
//User user = (User) factory.getBean("user",User.class);
//User user = (User) factory.getBean(User.class); //只有唯一的bean的时候才使用这种方式
//System.out.println(user);
System.out.println(factory.getType("user")); //获取user实例的类型
User user = (User) factory.getBean("user");
User user2 = (User) factory.getBean("user");
System.out.println(user == user2);//true -- 单例 --这是可以控制的在配置文件中 bean scope="prototype"-->会变成原型模式 这时结果会是false
System.out.println(factory.isPrototype("user"));//是否为原型 false
System.out.println(factory.isSingleton("user"));//是否为单例 true System.out.println(factory.isTypeMatch("user", User.class));//判断 user实例是否为这种类型 true String[] str = factory.getAliases("user"); //获取别名
for(int i=0;i<str.length;i++){
System.out.println(str[i]);//user2
}
}

使用junit测试时候,注解@BeforeClass的会先于@Test注解的方法运行,junit相关的jar最好使用4.4以上的版本

上边的案例factory.getBean("user",User.class);第一参数是set.xml文件中对应bean的name值或id值.

System.out.println(user == user2);//true 

spring IOC注解与xml配置的更多相关文章

  1. Spring使用AspectJ注解和XML配置实现AOP

    本文演示的是Spring中使用AspectJ注解和XML配置两种方式实现AOP 下面是使用AspectJ注解实现AOP的Java Project首先是位于classpath下的applicationC ...

  2. [spring]Bean注入——使用注解代替xml配置

    使用注解编程,主要是为了替代xml文件,使开发更加快速. 一.使用注解前提: <?xml version="1.0" encoding="UTF-8"?& ...

  3. Spring MVC 注解和XML的区别

      注解与XML配置的区别 注解:是一种分散式的元数据,与源代码紧绑定. xml:是一种集中式的元数据,与源代码无绑定. 因此注解和XML的选择上可以从两个角度来看:分散还是集中,源代码绑定/无绑定. ...

  4. Spring装配Bean---使用xml配置

    声明Bean Spring配置文件的根元素是<beans>. 在<beans>元素内,你可以放所有的Spring配置信息,包括<bean>元素的声明. 除了Bean ...

  5. @ComponentScan注解及其XML配置

    开发中会经常使用包扫描,只要标注了@Controller.@Service.@Repository,@Component 注解的类会自动加入到容器中,ComponentScan有注解和xml配置两种方 ...

  6. Spring的配置文件ApplicationContext.xml配置头文件解析

    Spring的配置文件ApplicationContext.xml配置头文件解析 原创 2016年12月16日 14:22:43 标签: spring配置文件 5446 spring中的applica ...

  7. mybatis使用注解替代xml配置,动态生成Sql

    mybatis使用注解替代xml配置时,遇到判断条件是否为null或者为空时,@Select很难搞定,不知道怎么办? mybatis3中增加了使用注解来配置Mapper的新特性,使用 SelectPr ...

  8. Spring基础篇——通过Java注解和XML配置装配bean

    自动化装配的确有很大的便利性,但是却并不能适用在所有的应用场景,比如需要装配的组件类不是由自己的应用程序维护,而是引用了第三方的类库,这个时候自动装配便无法实现,Spring对此也提供了相应的解决方案 ...

  9. Spring 简单使用IoC与DI——XML配置

    目录 Spring简介 导入jar包 Spring配置文件 Spring的IoC IoC简介 快速使用IoC Spring创建对象的三种方式 使用构造方法 使用实例工厂 使用静态静态工厂 Spring ...

随机推荐

  1. svn属性忽略

    svn属性 svn:ignore logslibs .settings.settings/*targettarget/*.classpath.project

  2. 健康检查NET Core之跨平台的实时性能监控

    ASP.NET Core之跨平台的实时性能监控(2.健康检查)   前言 上篇我们讲了如何使用App Metrics 做一个简单的APM监控,最后提到过健康检查这个东西. 这篇主要就是讲解健康检查的内 ...

  3. 一文读懂DDD

    何为DDD DDD不是架构设计方法,不能把每个设计细节具象化,DDD是一套体系,决定了其开放性,体系中可以用任何一种方法来解决这些问题,但是如果一些关键问题没有具体方案落地,可能让团队无所适从. 有的 ...

  4. Linux关闭/开启防火墙命令

    Linux还是比较常用的,于是我研究了一下Linux关闭防火墙命令,在这里拿出来和大家分享一下,希望你能学会Linux关闭防火墙命令 . 1) 永久性生效,重启后不会复原 开启: chkconfig ...

  5. MySQL 查看表大小

    当遇到数据库占用空间很大的情况下,可以用以下语句查找大数据量的表 SELECT TABLE_NAME ,),) 'DATA_SIZE(M)' ,),) 'INDEX_SIZE(M)' ,AVG_ROW ...

  6. QrenCode : linux命令行下生成二维码图片

    原文链接:http://wowubuntu.com/qrencode.html # 作者:riku/ / 本文采用CC BY-NC-SA 2.5协议授权,转载请注明本文链接. 对于二维码大家应该并不陌 ...

  7. 利用C#脚本来处理Excel

    废不多,直入正题. 所需环境:安装了Windows操作系统和Office软件的电脑一台. 开发语言:C# 开发需求:1.利用C#脚本读取Excel .xlsx文件 2.将程序中的数据存储到.csv文件 ...

  8. Android篇---Styles和Themes常见用法可能疑点小结

    1.style和theme的区别: 简而言之,style指的就是安卓中一个UI控件的样式,而themes指的是安卓中一个activity界面或者整个安卓应用整体的样式.theme的范围比style的范 ...

  9. [转载]—Health Check Reports Problem: Dependency$ p_timestamp mismatch for VALID objects (文档 ID 781959.1)

    Health Check Reports Problem: Dependency$ p_timestamp mismatch for VALID objects (文档 ID 781959.1) AP ...

  10. Angularjs 列表页面筛选

    个人博客链接:http://blog.yangqiong.com.cn/angularjs-lie-biao-ye-mian-shai-xuan/ 需求:页面URL和查询结果保持一致,当筛选条件变化时 ...