Spring学习笔记-DI(依赖注入)
2024-09-02 12:22:44
构造器注入(见前贴)
Set注入【重点】
- 依赖注入:Set注入
- 依赖:bean对象的创建依赖于容器
- 注入:bean对象的所有属性由容器来注入
【环境搭建】
- 复杂类型
// Class Address
package cn.iris.pojo;
/**
* @author Iris 2021/8/10
*/
public class Address {
private String address;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
- 真实测试对象
// Class Student
package cn.iris.pojo;
import java.util.*;
/**
* @author Iris 2021/8/10
*/
public class Student {
private String name;
private Address address;
private String[] books;
private List<String> hobbies;
private Map<String, String> friends;
private Set<String> games;
private Properties info;
private String lady3;
}
- applicationContext.xml
//applicationContext.xml(略)
【官网Copy||IDEA直接创建】
--- 注入部分 ---
<bean class="cn.iris.pojo.Student" id="student">
<!--普通类型注入,value-->
<property name="name" value="iris"/>
<!--bean注入,ref-->
<property name="address" ref="address"/>
<!--数组-->
<property name="books">
<array>
<value>King</value>
<value>Queen</value>
</array>
</property>
<!--list-->
<property name="hobbies">
<list>
<value>Basketball</value>
<value>ComputerGames</value>
</list>
</property>
<!--map-->
<property name="friends">
<map>
<entry key="GF" value="Molly"/>
</map>
</property>
<property name="games">
<set>
<value>GTAV</value>
<value>LOL</value>
<value>CS:GO</value>
</set>
</property>
<!--null-->
<property name="lady3">
<null/>
</property>
<!--property-->
<property name="info">
<props>
<prop key="SID">201931771338</prop>
<prop key="Class">3</prop>
<prop key="driver">abaaba</prop>
<prop key="url">ip:port/abc</prop>
<prop key="username">root</prop>
<prop key="password">123456</prop>
</props>
</property>
</bean>
- 测试类
public class MyTest {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Student student = (Student) context.getBean("student");
System.out.println(student.getName());
}
}
拓展方式注入
官方解释
p命名空间注入(p-namespace)【对应Set注入】
<!--p命名空间注入,可直接注入属性的值-->
<bean id="user" class="cn.iris.pojo.User" p:name="iris" p:age="19"/>
c命名空间注入(c-namespace)【对应Constructor-arg注入】
<!--c命名空间注入,构造器注入-->
<bean id="user2" class="cn.iris.pojo.User" c:age="19" c:name="iris"/>
测试
@Test
public void test2() {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
User user = context.getBean("user", User.class);
System.out.println(user);
User user2 = context.getBean("user2", User.class);
System.out.println(user2);
}
注意点
- p命名与c命名不能直接使用,需要导入【xml约束】
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
最新文章
- iOS多线程学习及总结
- python基础知识点整理
- CGAffineTransformMakeTranslation和CGAffineTransformTranslate
- C语言考试解答十题
- ThinkPHP第二十三天(Category表结构、PHPExcel导入数据函数)
- 华为服务器Linux在线做RAID方法
- tp的秘密
- 对const的总结与思考
- 关于web前端base64转换为Blob,存入数组后 ajax请求传输到后端 接受不到文件问题
- vue-cli 第一章
- Windows Internals 笔记——线程局部存储区
- [LeetCode] Basic Calculator IV 基本计算器之四
- SSH Struts2+hiberante+Spring整合
- ES6+ 开发 React 组件
- android 开发 实现一个app的引导查看页面(使用ViewPager组件)
- Golang Email
- 洛谷1352没有上司的舞会——树型dp
- ZT Android 4.2蓝牙介绍
- index range scan,index fast full scan,index skip scan发生的条件
- 轻松使用div模拟select下拉菜单
热门文章
- 『无为则无心』Python序列 — 19、Python列表的其他操作(切片和遍历)
- 9.5、zabbix高级操作(2)
- POJ 2236 Wireless Network 第一次做并查集,第一次写博客
- CRM企业管理系统对于企业的价值
- 【Java集合】ArrayList源码分析
- idea中快捷键的设置
- MySQL 删除devices表中id最大的一行
- linux学习之路第三天
- WPF项目升级sqlite-net-pcl时遇到Library e_sqlite3 not found的问题解决办法记录
- [刘阳Java]_MyBatis_其他方式来实现多表查询的操作_第9讲