Spring 学习笔记02
来源:互联网 发布:淘宝店铺开店资料 编辑:程序博客网 时间:2024/06/04 00:28
依赖注入
依赖注入的方式主要有两种,setter注入和构造器注入
1.setter注入
setter注入指的是通过成员变量的setter方法来注入被依赖的对象
首先定义两个接口:
public interface People { void drinkWater();}
public interface Water { String makeDrink();}
定义实现类
public class Tea implements Water{ public String makeDrink() { return "开始泡茶"; } }
public class Chinese implements People{ private Water water; public void setWater(Water water) { this.water = water; } public void drinkWater() { System.out.println(water.makeDrink()); System.out.println("中国人喜欢喝茶"); } }
配置文件中配置并注入bean
<bean id="chinese" class="com.huan.example.Chinese"> <property name="water" ref="Tea"></property> </bean> <bean id="Tea" class="com.huan.example.Tea"> </bean>
测试:
public class TestPeople { public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); Chinese chinese = ac.getBean("chinese", Chinese.class); chinese.drinkWater(); }}
结果:
Spring会自动检测<bean>元素中的<property>标签,在Spring调用默认的构造器创建Bean的实例之后会立刻调用对应的setter方法为Bean的
成员变量注入值。
2.构造注入
构造注入值的是在利用类的构造器构造实例时,对依赖的值进行注入,标签元素为<construct-arg../>
更改上面的Chinese实现类的代码以及配置文件
public class Chinese implements People{ private Water water; public Chinese(Water water){ this.water = water; } // public void setWater(Water water) {// this.water = water;// } public void drinkWater() { System.out.println(water.makeDrink()); System.out.println("中国人喜欢喝茶"); } }
<bean id="chinese" class="com.huan.example.Chinese"> <!-- <property name="water" ref="Tea"></property> --> <!-- 其他属性 index 代表构造器第几个参数 type 指定参数的类型--> <constructor-arg ref="Tea" /> </bean> <bean id="Tea" class="com.huan.example.Tea"> </bean>
使用测试类运行:
结果和set注入一致,构造注入和setter注入的主要区别在于:setter注入是先通过无参数的构造器创建一个Bean的实例,
然后调用对应的setter方法注入依赖关系,而构造器注入则直接调用有参数的构造器,当Bean实例创建完成后已经完成了
依赖关系的注入。
阅读全文
0 0
- Spring 学习笔记02
- Spring 学习笔记02
- Spring框架学习笔记02
- spring gossip(spring 学习笔记)
- spring学习笔记: Spring AOP
- spring学习笔记: Spring Jdbc
- spring学习笔记:spring事务管理
- spring学习笔记:spring事务管理
- spring学习笔记:spring controller
- spring学习笔记:spring事务管理
- Spring 学习笔记:浅谈 Spring
- spring学习笔记: Spring AOP
- Spring学习笔记-Spring容器
- Spring学习笔记 - Spring Data
- Spring学习笔记-Spring Cache
- Spring学习笔记 - Spring Boot
- Spring学习笔记: Spring概述
- Spring学习笔记02---搭建开发环境
- Java基础——面向对象
- 浅析自动装箱、自动拆箱
- CHttpFile::QueryInfo的BUG
- 词向量源码解析:(2.2)word2vec源码解析之word2phrase
- 怎样使用ADO.NET连接数据库
- Spring 学习笔记02
- 链表与节点
- Android将文字转成Bitmap并且可以自选ttf字体库设置文字粗体斜体
- ZooKeeper 伪集群安装
- Android百度地图(多个marker的点击事件)
- FFmpeg.c分析
- Error:Failed to resolve: com.android.support:support-annotations:26.0.2
- android 目录结构
- Canvas 与 SVG 的比较