依赖注入(Dependency Injection,DI)。
注入的三种方式:
构造器注入(有参无参)、setter注入、注解注入(自动装配)
1、构造器注入
有参构造器注入,同c命名空间注入
public class Injection { private int id; public Injection(int id){ this.id = id; } }
无参构造器注入
引入p命名空间
xmlns:p="http://www.springframework.org/schema/p"
<!--P(属性: properties)命名空间 , 属性依然要设置set方法--> <bean id="userp" class="com.alan.pojo.User" p:name="alan" p:age="18"/>
2、setter注入*
要求被注入的属性 , 必须有set方法 , set方法的方法名由set + 属性首字母大写 , 如果属性是boolean类型 , 没有set方法 , 是 is
set示例:
public class UserServiceImpl implements UserService { private UserDao userDao; // 利用set实现 public void setUserDao(UserDao userDao) { this.userDao = userDao; } public void getUser() { userDao.getUser(); } }
新建student类,并生成相应set方法
private String name; private Address address; private String[] books; private List<String> hobbys; private Map<String,String> card; private Set<String> games; private String wife; private Properties info;
对于不同类型,在xml中的注入
<bean id="addr" class="com.alan.pojo.Address"> <property name="address" value="上海"/> </bean> <bean id="student" class="com.kuang.pojo.Student"> <property name="name" value="小明"/> <property name="address" ref="addr"/><!-- bean注入--> <property name="books"> <array> <value>西游记</value> <value>红楼梦</value> <value>水浒传</value> </array> </property> <property name="hobbys"> <list> <value>听歌</value> <value>看电影</value> <value>爬山</value> </list> </property> <property name="card"> <map> <entry key="中国邮政" value="456456456465456"/> <entry key="建设" value="1456682255511"/> </map> </property> <property name="games"> <set> <value>LOL</value> <value>BOB</value> <value>COC</value> </set> </property> <property name="wife"><null/></property> <property name="info"> <props> <prop key="学号">20190604</prop> <prop key="性别">男</prop> <prop key="姓名">小明</prop> </props> </property> </bean>
3、注解注入自动装配
原文:https://www.cnblogs.com/alanchenjh/p/12256230.html