标签:www lap null add rgba cond 构造器 包括 getter
控制反转(IOC)也叫依赖注入(DI)的核心思想是,构建对象(包括初始化和赋值)都不需要人为操作,而是将这个权利交付给容器来进行。
1、构造器注入
(1)编写javaBean
public class Dog { private String name; private int age; public Dog(){} public Dog(String name, int age) { this.name = name; this.age = age; } public String getName() { return name;} public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
(2)无参构造
<bean id="goldilocks" class="com.xinzhi.entity.Dog" />
(3)有参构造
注意:value属性注入的是基本类型,如果是引用类型要使用ref连接其他的bean。
<!-- 推荐使用,根据名字注入 --> <bean id="goldilocks" class="com.xinzhi.entity.Dog"> <constructor-arg name="name" value="goldilocks"/> <constructor-arg name="age" value="11"/> </bean>
<!--根据参数顺序注入 --> <bean id="goldilocks" class="com.xinzhi.entity.Dog"> <constructor-arg index="0" value="goldilocks"/> <constructor-arg index="1" value="11"/> </bean>
<!-- 直接注入也是按顺序注入,了解 --> <bean id="goldilocks" class="com.xinzhi.entity.Dog"> <constructor-arg value="goldilocks"/> <constructor-arg value="11"/> </bean>
<!-- 按照参数类型注入,了解 --> <bean id="goldilocks" class="com.xinzhi.entity.Dog"> <constructor-arg type="java.lang.String" value="goldilocks"/> <constructor-arg type="java.lang.Integer" value="11"/> </bean>
2、set方法注入
要求被注入的属性 , 必须有set方法 。
set方法的方法名由set + 属性首字母大写
如果属性是boolean类型 , 没有set方法 , 是 is + 属性首字母大写 .
(1)Address.java
public class Address { private String addressInfo; public String getAddressInfo() { return addressInfo; } public void setAddressInfo(String addressInfo) { this.addressInfo = addressInfo; } }
(2)User.java
public class User { private String name; private Address address; //爱好 private String[] hobbies; //职务 private List<String> duties; //家庭关系 private Map<String,String> familyTies; //购物车商品 private Set<String> carts; //工作经历 private Properties workExperience; //女儿 private String daughter; ...省略setter和getter,toString }
(3)配置文件,看各种类型的参数如何注入
<?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.xsd"> <bean id="address" class="com.xinzhi.entity.Address" > <property name="addressInfo" value="珠琳旺角大厦"/> </bean>
<bean id="user" class="com.xinzhi.entity.User"> <!-- 基本属性注入 --> <property name="name" value="楠哥" /><!-- 引用类型注入 --> <property name="address" ref="address"/>
<!-- 数组注入 --> <property name="hobbies"> <array> <value>写程序</value> <value>吃</value> <value>喝</value> <value>漂亮姑娘</value> <value>赢钱</value> </array> </property>
<!-- list注入 --> <property name="duties"> <list> <value>IT老师</value> <value>我儿子的爸爸</value> </list> </property>
<!-- set注入 --> <property name="carts"> <set> <value>纸尿裤</value> <value>玩具</value> </set> </property>
<!-- map注入 --> <property name="familyTies"> <map> <entry key="father" value="张某某" /> <entry key="mather" value="钟某某" /> </map> </property>
<!-- property注入 --> <property name="workExperience"> <props> <prop key="first">电厂职工</prop> <prop key="second">java开发工程师</prop> <prop key="third">java讲师</prop> </props> </property>
<!-- null注入 --> <property name="daughter"><null /></property> </bean> </beans>
3. 测试
@Test public void testDI(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); User user = applicationContext.getBean(User.class); System.out.println(user); }
spring 梳理3--依赖注入DI 构造器注入、set方法注入
标签:www lap null add rgba cond 构造器 包括 getter
原文地址:https://www.cnblogs.com/Master-Sun/p/14316741.html