注入依赖对象的方式
来源:互联网 发布:java开发转测试的理由 编辑:程序博客网 时间:2024/04/27 19:05
手工装配
用法一:在xml配置文件中,通过bean节点配置(可使用P命名空间简化配置)。
示例:通过P命名空间来简化配置文件
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
</beans>
<bean id="john-modern" class="com.mycompany.Person" p:name="John Doe" p:spouse-ref="jane"/>
注:如果主调类里有属性和xxx-ref相同,则会产生异常
xmlns:p="http://www.springframework.org/schema/p" :首先指定p命名空间;
<bean id="……" class="……" p:id="value"/> :常量setter注入方式,其等价于<property name="id" value="value"/>;
<bean id="……" class="……" p:id-ref="bean1"/> :引用setter注入方式,其等价于<property name="id" ref="bean1"/>。
用法二:在java代码中使用@Autowired或@Resource注解方式进行装配
在java代码中使用@Autowired或@Resource注解方式进行装配。需要在xml文件中配置:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:annotation-config/>
</beans>
n这个配置隐式注册了多个对注释进行解析处理的处理器AutowiredAnnotationBeanPostProcessor,CommonAnnotationBeanPostProcessor,PersistenceAnnotationBeanPostProcessor,RequiredAnnotationBeanPostProcessor
n注: @Resource注解在spring安装目录的lib\j2ee\common-annotations.jar
示例:在java中使用@Autowired注解方式进行装配
@Autowired
private PersonDao personDao;//用于字段上
@Autowired
public void setOrderDao(OrderDao orderDao) {//用于属性的setter方法上
this.orderDao = orderDao;
}
@Autowired @Qualifier(“personDaoBean”)//按名称装配
private PersonDao personDao;
É默认按类型装配依赖对象。
É此注解为Spring提供。
É设置required属性为false,允许依赖对象null值。
É结合@Qualifier注解,按名称装配。
示例:在java中使用@Resource注解方式进行装配
@Resource private PersonDao personDao;//用于字段上
@Resource public void setOrderDao(OrderDao orderDao) {//用于属性的setter方法
this.orderDao = orderDao;
}
@Resource(name=“personDaoBean”)//按名称装配
private PersonDao personDao;
É默认按名称装配依赖对象。
É此注解为java本身提供,推荐使用。
É通过@Resource的name属性显式指定名称
É如果没有指定name属性,当注解标注在字段上,即默认取字段的名称,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象.
注意:如果没有指定name属性,并且按照默认的名称仍然找不到依赖对象时,@Resource注解会回退到按类型装配。但一旦指定了name属性,就只能按名称装配了。
自动装配
使用autowire属性
<bean id="..." class="..." autowire="byType"/>
autowire属性取值如下:
nbyType:按类型装配,可以根据属性的类型,在容器中寻找跟该类型匹配的bean。如果发现多个,那么将会抛出异常。如果没有找到,即属性值为null。
nbyName:按名称装配,可以根据属性的名称,在容器中寻找跟该属性名相同的bean,如果没有找到,即属性值为null。
nconstructor与byType的方式类似,不同之处在于它应用于构造器参数。如果在容器中没有找到与构造器参数类型一致的bean,那么将会抛出异常。
nautodetect:通过bean类的自省机制(introspection)来决定是使用constructor还是byType方式进行自动装配。如果发现默认的构造器,那么将使用byType方式。
n不推荐使用。
注:在实际应用中建议使用手工装配,因为自动装配会产生未知情况。开发人员无法预见最终的装配结果。
- 注入依赖对象的方式
- 依赖注入的方式
- 依赖注入的方式
- 依赖注入的方式
- Spring依赖注入的方式
- spring-依赖注入的方式
- spring依赖注入的方式
- spring依赖注入的方式
- 10006---依赖注入的方式
- AngularJS的依赖注入方式
- AngularJS的依赖注入方式
- Spring的依赖注入方式
- spring的依赖注入方式
- Spring的依赖注入方式
- Spring的依赖注入的方式
- Spring的 IOC 依赖注入方式
- spring依赖注入的三种方式
- Spring依赖注入的三种方式
- 字符串 到序反转
- linux shell 的 for 循环
- Android系统属性SystemProperties分析
- 设计模式概论
- HSV色彩属性
- 注入依赖对象的方式
- $_SERVER["REQUEST_URI"]是在Apache下是可用的,但在iis下是不可用的
- 黑马程序员--第一阶段4.多线程--第11天
- linux多线程 编程详解
- Android 录音获取麦克风实时音量(转)--资料
- this构造器里调用另一个构造器和区分同名变量与参数
- careerCup1.8
- 黑马程序员--第一阶段4.多线程--第12天
- MyEclips优化详细步骤