autowire是指自动装配,之前的博文你发现,我们如果想注入,总得在bean下面配置property
<bean id="userService" class="com.jt.service.UserService">
<property name="userDAO" ref="u" />
</bean>
是不是觉得麻烦,其实spring的开发者也考虑到了这点,我们可以通过在bean里面配置autowire来完成自动装配,如下
<bean id="userService" class="com.jt.service.UserService" scope="prototype" autowire="byName" />
autowire有以下五种类型:
- no
- byName
- byType
- constructor
- autodetect
1、no
表示不自动装配,这也是一种推荐方式,也是默认的方式,就是说,你必须添加property属性,虽然开发的工作量增加了,但程序更易读
2、byName
通过java类里面配置的name属性来装配,例如:
public class UserService {
private UserDAO userDAO;
public void add(User user) {
userDAO.save(user);
}
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
}
这里的名字叫userDAO,那么spring就会用这个名字,在beans.xml文件中,找一个叫UserDAO的bean,如果没有找到,返回null
3、byType
通过属性来找,所以名字不重要了,只要是UserDAO的类型,就能被装配进去,但问题是,如果再beans.xml中有两个以上类型相同的bean,spring就傻了,一定不要让程序迷惑。例如下面的配置,就有问题。
<?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-2.5.xsd">
<bean name="userDAO" class="com.jt.dao.impl.UserDAOImpl">
<property name="daoId" value="1"></property>
</bean>
<bean name="userDAO2" class="com.jt.dao.impl.UserDAOImpl">
<property name="daoId" value="2"></property>
</bean>
<bean id="userService" class="com.jt.service.UserService" scope="prototype" autowire="byType"/>
</beans>
报的异常为:
org.springframework.beans.factory.NoSuchBeanDefinitionException
4、constructor
spring通过寻找构造方法来装配,如果你没有相应的构造方法,返回null,如果找到,按byType方式来装配,所以上面的问题还是存在
5、autodetect
通过byType或constructor来找,如果找不到,返回null,找到多个,报错
好了,说了这么多,实际中用哪个?一般哪个都不用,都是直接配置property ,而且需要指出一点,如果配置了property ,就能覆盖autowire的配置。
分享到:
相关推荐
spring_iocspring_iocspring_iocspring_iocspring_iocspring_iocspring_iocspring_iocspring_ioc
T22.4_SpringIoC 高级 java 经典教程 经典教材
spring基础Spring IOC和Spring AOP的原理及使用
Spring源码分析_Spring_IOC
Spring_IOC_.rar 很好的文档,方便查找,值得学习!
T22.3_Spring IoC 基础 java 经典教程 经典教材
实验四:完成一个练习Spring框架IoC基本适用的小程序
《Java语言的反射机制.pdf》资料书,示例源代码JAVA+Spring,初学java反射者可以看看
Spring_IOC-v(上)笔记Spring_IOC-v(上)笔记Spring_IOC-v(上)笔记Spring_IOC-v(上)笔记
Spring_IOC(下)笔记Spring_IOC(下)笔记Spring_IOC(下)笔记Spring_IOC(下)笔记Spring_IOC(下)笔记
springioc 入门源码,快速上手,快速理解ioc
这是spring_ioc部分的内容。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...
1、标签主要用来进行Bean定义; 2、alias用于定义Bean别名的; 3、import用于导入其他配置文件的Bean定义,这是为了加载多个配置文件,当然也可以把这些配置文件构造为一个数组(new String[] {“config1.xml”, ...
spring-IOC的一些笔记心得
Spring IOC控制反转和依赖注入的实现、工厂设计模式、配置式和注解驱动式实现IOC
依赖注入:Dependency Injection IOC的作用:降低程序间的偶合(依赖关系) 依赖关系的管理:以后都交给spring来维护 ... ref:用于指定其他bean类型数据,它所指的是在spring的IOC容器中出现的bean
spring_ioc框架学习文档
spring配置xml完成IOC,这只是其中一个spring配置xml完成IOC,这只是其中一个spring配置xml完成IOC,这只是其中一个spring配置xml完成IOC,这只是其中一个spring配置xml完成IOC,这只是其中一个spring配置xml完成IOC,这...
个人学习spring框架时记录的笔记,纯手敲,SpringIOC+SpringMVC学习笔记,有兴趣的可以参考