第讲 依赖注入.ppt

第讲 依赖注入

企业级JAVA II 软件工程系:聂常红 cred_n@163.com 内容回顾: Spring概念 Spring的配置文件作用、主要内容、保存位置 ApplicationContext Spring Bean的作用域 配置文件的加载 第15讲 依赖注入 15.1 依赖注入概述 15.2 设值注入 15.3 构造器注入 15.4 依赖关系配置 15.5 注解注入 15.6 自动扫描机制 15.7 用注解对Bean进行初始化和销毁 15.6 手动装配和自动装配 15.1 依赖注入概述 依赖注入,指在IoC中,由容器创建的对象在运行期,动态地注入到应用的组件中 常用的依赖注入方式: 设值(setter)注入 构造器注入 注解注入 15.2 设值注入 设值注入,通过属性的Setter方法注入Bean的属性值。 优点:具有可选择性,灵活性比较高 语法: 必须提供默认的构造函数 必须为需要注入值的属性提供对应的Setter方法 在配置文件中必须使用property配置属性的注入值 属性注入示例: 15.3 构造器注入 构造器注入,通过构造器的参数注入Bean的属性值。 优点:可以保证一些属性在Bean实例化时得到设置,保证了Bean在实例化后即可使用。 语法: 必须提供带参数的构造函数 在配置文件中必须使用constructor-arg配置构造器参数的注入值 构造器注入示例: 构造器注入参数匹配设置: Spring的配置文件采用和元素标签顺序无关的策略。在配置文件中,constructor-arg标签和基本类型参数的对应关系可通过标签的type和index属性来决定 JAVA反射机制可以获取构造函数参数的类型,所以当Bean构造函数中的参数的类型是彼此可辨别时,也可不设置type和index 15.4 依赖关系配置 注入到Bean中的值可以包括以下几种类型值: 字面值 其他Bean实例 集合类型对象 1. 注入字面值: “字面值”通常指基本数据类型及其封装类以及String等类型的值,这些值可通过property或constructor-arg的value属性进行设置。 2. 注入其他Bean实例: 注入其他Bean实例有三种方式: 使用property或constructor-arg标签中的ref属性引用 使用ref子标签引用 使用内部Bean ①使用property标签的ref属性引用 ②使用ref子标签引用: 在property中使用子标签ref可以引用IoC容器中定义的Bean。 ref 常使用以下两个属性来引用容器中的其他Bean: bean:用于引用同一个XML文件或不同XML文件中Bean的id或name属性值。注意:当引用不同XML的Bean时需要使用import引入其他配置文件到当前XML文件 local:用于引用同一XML文件中的Bean的id或name属性值 使用ref子标签引用示例: ③使用内部bean 如果一个bean只被某个bean引用,此时可使用内部bean的方式进行bean的注入,例如: 注入字面值及Bean实例示例: ①创建一个java项目 ② 搭建Spring运行环境(即对项目添加相应的JAR文件) ③ 创建一个Dao接口及其实现类 ④ 创建一个业务接口及其实现类 ⑤ 在src目录下新建一个Spring的配置文件 ⑥ 创建测试类 ⑤创建业务类: ⑦创建测试类: 3. 注入集合类型对象: Spring为List、Set、Map和Properties等集合类属性的注入提供了专门的配置元素标签。 注入集合类型对象示例: 1)注入Set类型对象的配置: 2)注入List类型对象的配置: 3)注入Map类型对象的配置: 4)注入Properties类型对象的配置 15.5 注解注入 在java代码中可以使用@Autowired或@Resource注解方式进行依赖注入,此时需要在项目中添加spring-aop-4.1.2.RELEASE.jar以及在XML配置文件中添加以下配置信息: 这个配置隐式注册了多个对注解进行解析处理的处理器,如:AutowiredAnnotationeanPostProcessor,CommonAnnotationPostProessor等 @Resource注解存在JDK1.6中的 javax.annotation包下 @Autowired注解由Spring框架提供,与框架耦合紧密 @Autowired:默认按类型装配 @Resource:默认按字段名称或属性名称装配,当找不到与名称匹配的bean时才会按类型装配 如果设置为:@Resource(name=xxx)时,将按“xxx“寻找bean,没有匹配的bean时返回n

文档评论(0)

1亿VIP精品文档

相关文档