7、创建对象和set注入属性
1、Bean管理
1、spring创建对象
2、注入属性
2、bean管理的两种方式
1、基于xml配置文件方式
1、创建对象
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8KoEYDnN-1644581660827)(C:\Users\Shenjunhann\AppData\Roaming\Typora\typora-user-images\image-20220211113858395.png)]
1、在配置文件中,使用bean标签,标签中添加对应属性,可以实现对象创建。
2、常用属性
id:唯一标识
class属性;类全路径(包类路径)
name:可以加特殊符号,废了
3、创建对象时,默认执行无参构造方法完成对象创建。
2、xml注入属性
1、DI:依赖注入
方式一:set注入
1、配置user对象创建
<bean id="user" class="com.atguigu.spring5.User"></bean>
2、配置文件配置对象创建,配置属性注入
<bean id="book" class="com.atguigu.spring5.Book">
<property name="bname" value="jdk"></property>
</bean>
方式二:有参构造注入
1、创建类,定义属性,创建属性对应有参构造方法。
public class Orders{
private String oname;
private String address;
//创建有参构造函数
public Oeders(String oname,String address){
this.onname=oname;
this.address=address;
}
}
注意:默认使用无参构造创建
2、有参构造注入属性
<bean id="orders" class="com.atguigu.spring5.Orders">
<construcor-arg name="oname" value="电脑"></construcor-arg>
<construcor-arg name="address" value="China"></construcor-arg>
</bean>
3、测试
@Test
public void testOrders(){
//1、加载spring配置文件
ApplicationContext context=new ClassPathXmlApplicationContext("bean1.xml");
//2、获取配置创建的对象
Orders orders=context.getBeans("orders",Orders.class);
sout(orders);
orders.ordersTest();
}
2、基于注解方式实现
没有讲还
9、p名称空间注入
可以简化xml方式。做一个了解
加一个xmln
用于区分不同的名称空间
写法
<bean id="book" class="com.atguigu.spring5.Book" p:bname="九阳神功" p:bauthor="无名氏"></bean>
10、注入空值和特殊符号
1、字面量
1、null值
<property name="address">
<null/>
</property>
2、属性值包含特殊符号
1、转义
2、把特殊符号内容写到CDATA
<property name="address">
<value>
<![CDATA[<<南京>>]]>
</value>
</property>
11、注入外部bean
service和dao 对象创建
<bean id="userService class="com.atguigu.spring5.service.UserService>
<property name="userDao" ref="userDaoImpl"></property>
</bean>
<bean id="userDaoImpl" class="com.atguigu.spring5.dao.UserDaoImpl"></bean>
ref属性:创建userDao对象bean标签id值
12、注入内部bean和级联注入
案例
新建员工类
public class Emp{
private String ename;
private Dept dept;
public void setDept(Dept dept){
this.dept=dept;
}
}
内部bean
<bean id="emp" class="com.atguigu.spring5.bean.Emp">
<property name="ename" value="Lucy"></property>
<properry name="dept">
<bean id="dept" class="com.atguigu.spring5.bean.Dept">
<property name="dname" value="安保部"></property>
</bean>
</properry>
</bean>
级联赋值写法
<bean id="emp" class="com.atguigu.spring5.bean.Emp">
<property name="ename" value="Lucy"></property>
<properry name="dept" ref="dept"></properry>
</bean>
<bean id="dept" class="com.atguigu.spring5.bean.Dept">
<property name="dname" value="财务部"></property>
</bean>
13、注入集合类型属性
数组类型注入
list类型属性注入
<property name="list">
<list>
<value>张三</value>
<value>小三</value>
</list>
</property>
map类型属性注入
set类型属性注入
14、注入集合类型属性
4、在集合里设置对象类型值
5、提取集合注入部分
使用util:list
提取list集合类型属性注入
<util:list id="bookList">
<value>jjd</value>
<value>dfdsf</value>
</util:list>
提取list集合属性注入使用
<bean id="book" class="com.atguigu.spring5.collectiontype.Book">
<property name="list" ref="bookList"></property>
</bean>