- 好久没写博客了,最近决定重新拾起来,这些天面试了很多 ,借机也了解恢复了很多状态hh
通过xml进行注册:
- 一开始接触spring的时候经常会使用xml一个个去进行注册
类似如下
<bean id="bean" class="beandemo.Bean" />
- 但是一个个太麻烦进行注册太麻烦了有时候就会使用xml扫描进行注册
<context:component-scan base-package="com.company.beandemo"/>
通过构造函数方式进行注册(不常用,xml的一种)
- 如下,写一个带有构造函数的类
public class PersonBizImpl implements PersonBiz {
// 声明"依赖对象"PersonDAO
PersonDAO personDao = null;
// 声明"依赖的基本数据类型"
String str = null;
// 生成无参构造方法
public PersonBizImpl() {
super();
}
// 生成带参构造方法
public PersonBizImpl(PersonDAO personDao, String str) {
super();
this.personDao = personDao;
this.str = str;
}
public void addPerson() {
this.personDao.addPerson();
System.out.println(str);
}
}
- 然后通过在xml文件里面进行注册
· index是索引,指定注入的属性,从0开始,如:0代表personDao,1代表str属性;
· type是指该属性所对应的类型,如Persondao对应的是com.aptech.dao.PersonDAO;
· ref 是指引用的依赖对象;
· value 当注入的不是依赖对象,而是基本数据类型时,就用value;
<!-- 利用构造器配置依赖注入 -->
<bean id="personDao" class="com.aptech.dao.impl.PersonDAOImpl"></bean>
<bean id="personBiz" class="com.aptech.biz.impl.PersonBizImpl">
<constructor-arg index="0" type="com.aptech.dao.PersonDAO"ref="personDao"></constructor-arg>
<constructor-arg index="1" value="Spring学习"></constructor-arg>
</bean>
通过setter进行注入(不常用,xml的一种)
- 首先要配置被注入的bean,在该bean对应的类中,应该有要注入的对象属性或者基本数据类型的属性。例如:为UserBiz类注入UserDAO,同时为UserBiz注入基本数据类型String,那么这时,就要为UserDAO对象和String类型设置setter方法.,用于进行依赖注入。
如何配置该bean呢?
<bean id="userBiz" class="com.text.biz.impl.UserBizImpl">
<property name="userDao">
<ref>userDao</ref>
</property>
</bean>
以上就是一个使用属性的setter方法的方式进行依赖注入。
通过注解方式进行注入
- 一般情况下,注入Bean有一个最直白,最易懂的方式去实现注入,代码如下。
- Bean类
public class MyBean{ }
- Configuration类
//创建一个class配置文件
@Configuration
public class MyConfiguration{
//将一个Bean交由Spring进行管理
@Bean
public MyBean myBean(){
return new MyBean();
}
}
- Test类
- 与xml有一点不同,这里在Test中,实例化的不再是ClassPathXmlApplicationContext,而是获取的AnnotationConfigApplicationContext实例。
ApplicationContext context = new AnnotationConfigApplicationContext(MyConfiguration.class);
MyBean myBean = cotext.getBean("myBean",MyBean.class);
System.out.println("myBean = " + myBean);
- 上面的代码中MyBean也就是我们需要Spring去管理的一个Bean,他只是一个简单的类。
而MyConfiguration中,我们首先用@Configuration注解去标记了该类,这样标明该类是一个Spring的一个配置类,在加载配置的时候会去加载他。
在MyConfiguration中我们可以看到有一个方法返回的是一个MyBean的实例,并且该方法上标注着@Bean的注解,表明这是一个注入Bean的方法,会将下面的返回的Bean注入IOC容器。