Spring炼气之路(炼气二层)

目录

一、bean的配置

1.1 bean的基础配置

1.2 bean的别名配置

 1.3 bean的作用范围配置

  二、bean的实例化

2.1 bean是如何创建创建的?

2.2  使用静态工厂实例化bean

2.3 使用实例工厂实例化bean

三、bean的生命周期

3.1 什么是bean的生命周期

3.2  bean的生命周期的控制

 3.3 怎么执行bean生命周期控制中的销毁方法

3.3.1 调用close方法

 3.3.2 注册钩子关闭容器

四、DI依赖注入

4.1 setter注入

4.1.1 注入简单类型

4.1.2 注入引用类型

4.2 构造器注入

4.2.1 注入简单类型

4.2.2 注入引用类型

4.3 依赖自动装配

4.3.1 按类型自动装配

4.3.2 按名称自动装配

4.4 集合注入

4.4.1 注入数组类型数据

4.4.2 注入List类型数据

4.4.3 注入set类型数据

4.4.4 注入Map类型数据

4.4.5 注入Properties类型数据


            前言:Spring炼气之路(炼气一层)-CSDN博客

一、bean的配置

1.1 bean的基础配置

id: bean的id,使用容器可以通过id值获取对应的bean,在一个容器中id值唯一

class: bean的类型,即配置的bean的全路径类名

    <bean id="bookDao" class = "com.zhang.dao.impl.BookDaoImpl"/>
    <bean id="bookService" class="com.zhang.service.impl.BookServiceImpl"/>

1.2 bean的别名配置

name:bean的别名,可以通过name值获取对应的bean,在容器中name值不唯一

 <bean id="bookDao" name="name1 " class = "com.zhang.dao.impl.BookDaoImpl" />
    <bean id="bookService" name="name2 name3"  class="com.zhang.service.impl.BookServiceImpl"/>

 1.3 bean的作用范围配置

scope: bean标签,singleton(单例) prototype(非单例)

<!--    默认是singleton-->
    <bean id="bookDao" name="name1 " class = "com.zhang.dao.impl.BookDaoImpl" scope="singleton"/>
    <bean id="bookService" name="name2 name3"  class="com.zhang.service.impl.BookServiceImpl" scope="prototype"/>

  二、bean的实例化

2.1 bean是如何创建创建的?

                 bean本质上就是对象,创建bean使用构造方法完成(private修饰的构造方法也能创建实例化bean)

证明:

2.2  使用静态工厂实例化bean

factory-method:标明创建对象的工厂方法

<bean id="orderDao" class="com.zhang.factory.OrderDaoFactory" factory-method="getOrderDao"/>

2.3 使用实例工厂实例化bean

        第一步:先创建工厂对象的bean

        第二步:标明工厂方法和工厂bean对象

<bean id="userFactory" class="com.zhang.factory.UserDaoFactory"/>
<bean id="userDao" factory-method="getUserDao" factory-bean="userFactory"/>

三、bean的生命周期

3.1 什么是bean的生命周期

        bean对象 从创建到销毁的整体过程

3.2  bean的生命周期的控制

第一步:创建初始化销毁方法

 //表示bean初始化对应的操作
    public void init() {
        System.out.println("init");
    }

    //表示bean销毁前对应的操作
    public void destroy(){
        System.out.println("destroy");
    }

第二步:在配置文件中配置生命周期

<bean id="bookDao" class="com.zhang.dao.impl.BookDaoImpl" init-method="init"
destroy-method="destroy"/>

 3.3 怎么执行bean生命周期控制中的销毁方法

                当虚拟机退出时,同时IOC容器来不及销毁,就不会调用销毁方法

3.3.1 调用close方法

        调用ClassPathXmlApplicationContext对象的close方法

 //创建ClassPathXmlApplicationContext对象
        ClassPathXmlApplicationContext cptx = new ClassPathXmlApplicationContext("applicationContext.xml");
        cptx.close();

 3.3.2 注册钩子关闭容器

        调用registerShutdownHook方法,在虚拟机退出之前关闭容器

ClassPathXmlApplicationContext cptx = new ClassPathXmlApplicationContext("applicationContext.xml");
        cptx.registerShutdownHook();

四、DI依赖注入

4.1 setter注入

                就是使用set方法传递数据

4.1.1 注入简单类型

        使用<property/> 在里面用value属性

<property name="class" value="one"/>

4.1.2 注入引用类型

        使用ref参照其他bean

<bean id="bookService" class="com.zhang.service.impl.BookServiceImpl">
        <property name="bookDao" ref="bookDao"/>
    </bean>


4.2 构造器注入

                就是使用构造方法注入

4.2.1 注入简单类型

                使用<contructor-arg />value属性

<constructor-arg name="class" value="one"/>

4.2.2 注入引用类型

        使用<contructor-arg />ref属性

  <bean id="bookService" class="com.zhang.service.impl.BookServiceImpl">
        <constructor-arg name="bookDao" ref="bookDao"/>
    </bean>

4.3 依赖自动装配

        IoC容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称为自动装配

4.3.1 按类型自动装配

        <bean>标签中使用autowire属性= "byType"

<bean id="bookService" class="com.zhang.service.impl.BookServiceImpl"
autowire="byType"/>

4.3.2 按名称自动装配

        <bean>标签中使用autowire属性= "byName"

<bean id="bookService" class="com.zhang.service.impl.BookServiceImpl"
autowire="byName"/>

4.4 集合注入

                集合中可以存放基本数据类型和引用数据类型,那么集合怎么注入依赖

4.4.1 注入数组类型数据

<property name="array">
<array>

<value>  </value>
<value>  </value>

</array>
</property>

4.4.2 注入List类型数据

<property name="list">
<list>

<value>  </value>
<value>  </value>

</list>
</property>

4.4.3 注入set类型数据

<property name="set">
<set> 

<value>  </value>
<value>  </value>

</set>
</property>

4.4.4 注入Map类型数据

<property name="map">
<map>

<entry key="" value=""/>
<entry key="" value=""/>

</map>
</property>

4.4.5 注入Properties类型数据

<property name="properties">
<props>

<prop key="">  </prop>
<prop key="">  </prop>

</props>
</property>

  • 17
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值