初始Spring(叁)

目录

6.3,拓展注入

6.4,bean的作用域

7.Bean的自动装配

7.1,测试 

7.2,ByName自动装配

7.7,ByType自动装配                 


 

6.3,拓展注入

我们可以使用p命名空间和c命名空间来进行注入! 

官方解释;

 

使用: 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:c="http://www.springframework.org/schema/c"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- p命名空间注入: p:属性="" 可以直接进行对象属性的注入  -->
    <bean id="user" class="com.xiao.domain.User" p:name="小步" p:age="16"/>

    <!-- c命名空间注入: 注入构造器参数 -->
    <bean id="user02" class="com.xiao.domain.User" c:name="小七" c:age="13"/>
</beans>

 测试:

import com.xiao.domain.Student;
import com.xiao.domain.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class beansTest {

    @Test
    public void test01(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        Student student = (Student) applicationContext.getBean("student");
        System.out.println(student.toString());
    }

    @Test
    public void test02(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("userbeans.xml");
        User bean = applicationContext.getBean("user", User.class);
        System.out.println(bean);
    }

    @Test
    public void test03(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("userbeans.xml");
        User bean = applicationContext.getBean("user02", User.class);
        System.out.println(bean);
    }
}

注意点:p命名和c命名不能直接使用需要导入约束!

xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"

 

6.4,bean的作用域

 

 

1.单例模式(Spring默认)

<bean id="user02" class="com.xiao.domain.User" c:name="小七" c:age="13" scope="singleton"/>

 2.原型模式:每次从容器中get的时候产生一个新的对象!

<bean id="user02" class="com.xiao.domain.User" c:name="小七" c:age="13" scope="prototype"/>

3.其余的request,session,application,websocket这些只能在web中用到.

7.Bean的自动装配

  • 自动装配是spring满足bean依赖的一种方式!
  • spring会在上下文中自动寻找,并自动给bean装配属性!

在spring中有三种装配方式:

  1. 在xml中显示的配置
  2. 在java中显示的配置
  3. 隐式的自动装配bean[重要] 

 

7.1,测试 

1.环境搭建:一个人有两个宠物

7.2,ByName自动装配

    <!--
    byName:会自动在上下文中查找,和自己对象set方法后面的值对于的名称自动装配
     -->
    <bean id="people" class="com.xiao.domain.People" autowire="byName">
        <property name="name" value="小步呀"/>
    </bean>

7.7,ByType自动装配                 

    <!--
    byName:会自动在上下文中查找,和自己对象set方法后面的值对于的名称自动装配
    byType: 会自动在上下文中查找, 和自己类型相同的bean自动装配(不推荐使用!)
     -->
    <bean id="people" class="com.xiao.domain.People" autowire="byType">
        <property name="name" value="小步呀"/>
    </bean>

 小结: 

  • 在byName的时候需要保证所有bean的id唯一,并且这个bean需要和自动注入的属性set方法的值一致!
  • 在byType的时候必须要帮助bean的所有类型唯一,并且这个bean必须要和自动注入的属性类型一致!
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

123小步

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值