Spring依赖注入(基于XML配置文件和Annotation的方式完成属性装配)
来源:互联网 发布:淘宝自助解封 编辑:程序博客网 时间:2024/04/26 17:14
依赖注入的方式(手工装配):
1.使用bean的构造器注入—基于XML方式
2.使用属性setter方法注入—基于XML方式
3.使用field注入—基于Annotation方式
注入依赖对象可采用手工装配和自动装配,在实际应用中建议使用手工装配,自动装配会产生未知情况,且无法预知装配结果
使用构造器方式注入:
// 提供构造方法 public PersonServiceBean(PersonDao personDao, String name) { this.personDao = personDao; this.name = name; } @Override public void save() { System.out.println(name); personDao.add(); } public void destory() { System.out.println("关闭打开的资源"); }
<!--在bean中子元素的配置如下--> <constructor-arg index="0" type="cn.itcast.dao.PersonDao" ref="personDao"></constructor-arg> <constructor-arg index="1" value="jxlgdx"></constructor-arg>
手工装配依赖对象:两种方式
1.在xml配置文件中,通过在bean节点下的配置,代码如下
<bean id="personService" class="cn.itcast.service.impl.PersonServiceBean"> <!-- id属性中不能有特殊字符,name属性可以有 --> <!-- 构造器注入 --> <constructor-arg index="0" type="cn.itcast.dao.PersonDao" ref="personDao"/> <constructor-arg index="1" type="String" value="jxlgdx"/> <!-- 属性setter方法注入 --> <property name="name" value = "zhangsan"></property> </bean>
2.在java code中使用@Autowired或@Resource注解方式进行装配(推荐使用Resource),但使用注解方式需要在xml文件中配置如下信息,
*
@Resource是JDK中自带的注解,而@Autowired是Spring Framework提供的,为了方便解耦,推荐使用Resource*
<?xml version="1.0" encoding="UTF-8"?><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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:annotation-config/>
在java代码上使用注解时,可以写在字段上也可以写在set方法上
@Resource public void setPersonDao(PersonDao personDao) { this.personDao = personDao; }//写在set方法上
或
public class PersonServiceBean implements PersonService { @Resource private PersonDao personDao; private String name;//写在字段上
PS:在用junit测试时,出现一个bug,最后在网上才找到解决办法,如下:
关于 AnnotationConfigBeanDefinitionParser are only available on JDK 1.5 and higher
修改IDE使用的JDK版本可百度找到,这个使用annotation完成bean属性装配也由于bug弄了一早上,汗颜。。。
Annotation:配置的作用,注解代表某一种业务意义,注解背后的处理器才有实际作用:先解析所有属性,根据搜索规则,如果能match上,则取得bean,通过反射技术注入
另一种注解@Autowired的使用:
1.@Autowired默认按照类型装配,@Resource默认按照名称装配,当找不到与名称匹配的bean才会按照类型装配(@Resource的名称可以通过name属性指定,如果没有name属性则默认取字段的名称作为bean的名称寻找依赖对象,当注解使用在setter方法上面时,默认区属性名作为bean的名称寻找依赖对象)
PS:@Reource,若没有指定name属性,并且按照默认名称也找不到依赖对象时,注解会自动根据类型装配,但一旦指定了name属性后,则在只能按照名称装配
自动装配(不推荐使用,会产生不可预知的结果)
例子如下,aotuwire属性取值有多种,详细见API文档
<bean id="xxx" class="yyy.yyy" autowire="byType"/>
- Spring依赖注入(基于XML配置文件和Annotation的方式完成属性装配)
- spring、IoC控制反转和DI依赖注入入门、基于XML的Bean装配、基于注解的Bean装配
- Spring依赖注入——手工装配(XML方式)
- Spring属性依赖注入(手动装配)
- Spring基于annotation的依赖注入实现
- Spring的依赖注入(基于XML)
- 【JavaWeb-23】spring、IoC控制反转和DI依赖注入入门、基于XML的Bean装配、基于注解的Bean装配
- 装配Bean基于XML (Bean种类、作用域、生命周期、属性依赖注入)
- spring 学习之四(spring的注入方式(xml和annotation))
- Spring依赖注入 — 属性自动装配
- Spring依赖注入 — 属性自动装配
- spring中属性文件和配置文件的注入方式
- 基于Spring4的Bean的装配和依赖注入
- 详解 Spring 3.0 基于 Annotation 的依赖注入实现
- Spring 3.0 基于 Annotation 的依赖注入实现(二)
- Spring 3.0 基于 Annotation 的依赖注入实现一
- 详解 Spring 3.0 基于 Annotation 的依赖注入实现
- 详解 Spring 3.0 基于 Annotation 的依赖注入实现
- 设备树编译
- input输入框里限制只能输入数字
- JavaScript基础
- Itext生成合同
- EventBus使用
- Spring依赖注入(基于XML配置文件和Annotation的方式完成属性装配)
- ANSI标准I/O总结(1)
- TalkingData的使用,iOS数据统计
- LibSVM学习(一)---中英文对照使用手册完整版暨了解readme文件
- 自定义的高级dialog
- webstrom格式化代码和常用的快捷键
- 超高速前端开发工具——Emmet
- python使用selenium获取元素出现错误:"errorMessage":"Compoud class names not permitted"
- Linux多线程