spring7-14、注入

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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值