首页 > 其他 > 详细

IOC接口

时间:2021-05-07 14:47:05      阅读:38      评论:0      收藏:0      [点我收藏+]

  

IOC 思想基于 IOC 容器完成,IOC 容器底层就是对象工厂

种类

Spring 提供 IOC 容器实现两种方式:(两个接口)

BeanFactory

  • IOC 容器基本实现,是 Spring 内部的使用接口不提供开发人员进行使用
  • 加载配置文件时候不会创建对象,在获取对象(使用)才去创建对象 (懒汉式

ApplicationContext

  • BeanFactory 接口的子接口,提供更多更强大的功能,一般由开发人员进行使用
  • 加载配置文件时候就会把在配置文件对象进行创建(饿汉式
  • 这里使用饿汉式比较好
  • 即使懒加载可以节省内存空间,但是由于很多IOC容器管理的对象都是经常使用的,所以并没有节省多少时间
  • 饿汉式的好处在于把加载(初始化)类的时间放到了整个服务器初始化的时候等服务器运行时就可以立刻使用到需要的IOC对象,而不像懒加载那样等待初始化完成才可以使用

   

   

IOC底层原理

202133

20:37

   

IOC概念

spring ioc指的是控制反转,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。交由Spring容器统一进行管理,从而实现松耦合

依赖对象

依赖关系,是类与类之间的联接。依赖关系表示一个类依赖于另一个类的定义。一般情况下,依赖关系在Java语言中体现为局域变量、方法的形参,或者对静态方法的调用

  • 比如类A中有一个域对象B,则A依赖于B(A想要创建对象时,必须先创建域对象B)
  • 在IOC中,上例的B也是一个对象,
    • 如果B也是由IOC进行管理的一个对象,则IOC创建A对象时,也要把容器中的B对象赋值(注入)到A的域中
    • 不是对A对象手动或调用构造器自己新建一个B域对象
      • 这有违反了IOC控制反转的概念,(B域对象也应该由IOC进行创建管理)

目的

降低耦合度

IOC底层技术

xml解析、工厂模式、反射

背景

技术分享图片

  • 当有很多service调用多个dao层时,dao包一变
    • 原始模式中所有service都需要改
    • 而有了工厂模式时你只需要改工厂类就可以了,实现解耦
  • 比如 service是根据接口来进行调用dao类方法的(service的操作对象是接口),现在有dao1类和dao2类实现了接口
    • 假如之前service使用的都是dao1类,现在要使service跟换dao2类,则只需要修改userfactory的return 的dao类即可,而不用去修改所有service的源代码
    • dao1的方法和dao2方法名称相同(因为实现了同一个接口),但各自实现不同,所以即使service的代码没有发生变化,也可以调用不同的函数(已达到容易维护,解耦合的效果)

流程图

技术分享图片

系统文件

demo.class

baseDao.class

Utils.class

 

模拟IOC

  

demo结构

目录结构

描述

技术分享图片

annotation

SelfAutowired

模拟IOC中@Autowired的注解,使用在一个类(该类由IOC管理)的域的上面,且该域对象也是由IOC进行管理

SelfService

自定义注解,模拟ioc的@Service注解, 在一个类声明前使用该注解时,表示运行时,该类注册在IOC容器中,由IOC进行管理

IOC

这个类模仿学习Spring_IOC的功能

Servlet_1\2\3

用来模拟Servlet程序(类声明前都打上了@SelfService的标签),其中servlet_3的执行依赖于servlet_1和servlet_1

技术分享图片

test

测试文件夹,用来进行junit测试

Utils

  • 这个class工具类用来扫描一个package下的所有类,并返回class对象,路径为默认src为开始目录
  • 里面还有一个方法可以扫描jar包里面的类,但是要提供jar包的路径,以及jar包里面package的路径

技术分享图片技术分享图片

文件名(类名)

io读取

   

技术分享图片

技术分享图片

   

技术分享图片技术分享图片

调用

List<Class<?>> package路径下所有类的类对象

   

技术分享图片

  

技术分享图片

  • 遍历判断处理

技术分享图片

技术分享图片

  • 首字母转小写

技术分享图片

技术分享图片

调用

技术分享图片

技术分享图片

扫描目录下的class

技术分享图片

新建对象

技术分享图片

  

技术分享图片

技术分享图片技术分享图片

IOC容器

放入新建对象

技术分享图片

技术分享图片

packageName

技术分享图片

beans

技术分享图片

调用

技术分享图片

技术分享图片

  

技术分享图片

  • 对beans容器中所有的对象进行执行依赖检查,并对有执行依赖的类进行赋值

技术分享图片

技术分享图片

获取类属性

技术分享图片

遍历判断

技术分享图片

判断条件

技术分享图片

成功

技术分享图片

失败

直接退出

技术分享图片

调用

技术分享图片技术分享图片

完成依赖注入

技术分享图片技术分享图片

程序视图

调用

   

技术分享图片

用户视图

十、

   

调用构造方法,完成IOC初始化

   

技术分享图片

构造方法(初始化)

技术分享图片

域初始化

技术分享图片

新建对象

技术分享图片

依赖注入

技术分享图片

域的初始化

调用getBean()获得对象

   

技术分享图片

技术分享图片

  

技术分享图片

   

   

IOC bean 配置

202133

20:38

bean管理

  • Bean 管理指的是两个操作
    • Spring创建对象
    • Spring注入属性

方式

  • 基于XML配置文件方式实现
  • 基于注解的方式实现

   

XML管理方式

202139

20:11

   

基于 xml 配置文件方式实现

202136

19:53

配置

  • 在 spring 配置文件中,使用 bean 标签,标签里面添加对应属性,就可以实现对象创建
  • 创建对象时候默认也是执行无参数构造方法完成对象创建
    • 所以Bean一定要确保有无参数构造方法,否则报错

标签属性

  • 在 bean 标签有很多属性

属性

描述

Id

  • 对被IOC管理的对象起一个唯一标识,面向的是使用者
  • Bean中一个id对应一个唯一的对象
    • 当然可以通过多个互不相同的id,相同的类全名,来配置多个同类的对象

class

类全路径(包类路径)

name

用来为id创建一个或多个别名,它可以是任意的字母符合。多个别名之间用逗号, 分号 或者空格分开。

index

index:第几个参数,用在bean<>的子标签中(比如constructor-arg),表示这个标签所代表的参数在方法的参数列表中的位置(从0开始),用来准确的选择到对应的构造方法

配置文件格式示例

<bean id="id_1" class="com.huz.Service.Servlet_1"> </bean>

   

依赖注入

DI:依赖注入,就是注入属性

  • 属性注入要求该类需要遵守bean典范,即需要有get方法

手动注入

调用方法注入

  • 即调用对象的get与set方法来完成对属性的赋值与修改

构造器注入

  • new一个对象的时候,使用有参数的构造器进行属性的注入

   

配置文件注入

  

<bean>标签注入

方式

在 spring 配置文件配置对象的bean标签中,通过在标签中添加键值对的方式进行,属性注入

格式

    <bean id="id_1" class="com.huz.Service.Servlet_1">

   

        <!--bean标签包围property标签,property标签以键值对的方式进行赋值-->

        <property name="field_name1" value="value_1"></property>

        <property name="field_name1" value="value_2"></property>

   

    </bean>

示例

技术分享图片

效果

执行Getbean()后,获得的对象中对应的域被设置为bean标签所设置的值

   

字面量注入

null 值

格式

        <!--null -->

        <property name="field_name">

            <null/>

        </property>

示例

技术分享图片

属性值包含特殊符号

格式

        <property name="field_name" >

            <value><![CDATA[ <<container>> ]]></value>

        </property>

  

技术分享图片

注入bean

注入外部bean

定义

  • 在配置域中通过id注入(引用)一个已经在IOC容器中的对象

格式

<property name="field_name" ref="引用对象的id">

   

</property>

示例

技术分享图片

注入内部bean

 

定义

  • 配置域中注入一个临时新建的对象(该对象在域的属性标签内部用bean标签嵌套创建
  • 匿名是因为外部变量没有引用此对象,只有此域引用了这个对象

格式

<property name="outer_field">

   

<!--outer_field域注入一个匿名的idobject_idcom.huz.bean.department类对象-->

   

    <bean id="object_id" class="com.huz.bean.department">

        <property name="field_name" value="value">

        </property>

    </bean>

   

</property>

示例

技术分享图片

级联赋值

  

假设域A要引用B这个对象,则

  • 若两种方式一起用则,方式二的效果是最终效果
    • 先执行方式一的联机赋值,再执行方式二的联机赋值

方式一

方式

先在外部创建B,在B外部的创建tag内设置好该B的域,再对A进行外部注入(引用

示例

技术分享图片

方式二

方式

  • 先在外部创建B,再对A进行外部注入注入后直接在A的内部修改B的域
  • 在<bean>标签中通过id值设置其他bean的属性值

格式

name="other_object‘id.field_name"

  

技术分享图片

注入集合属性

类型

格式

数组注入

        <!--数组注入-->

        <property name="array">

            <array>

                <value>value_1</value>

                <value>value_2</value>

                <value>value_3</value>

                <value>value_4</value>

            </array>

        </property>

List注入

        <!--List注入-->

        <property name="list">

            <list>

                <value>value_1</value>

                <value>value_2</value>

                <value>value_3</value>

                <value>value_4</value>

            </list>

        </property>

map注入

        <!--map注入-->

        <property name="map">

            <map>

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

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

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

            </map>

        </property>

set注入

        <property name="set">

            <set>

                <value>value_1</value>

                <value>value_2</value>

                <value>value_3</value>

                <value>value_4</value>

            </set>

        </property>

集合里面设置对象类型值

        <!--通过id对集合注入对象-->

        <property name="list_Object">

            <list>

                <ref bean="id_1"></ref>

                <ref bean="id_2"></ref>

                <ref bean="id_3"></ref>

                <ref bean="id_4"></ref>

            </list>

        </property>

   

<!--被集合引用的对象-->

    <bean id="id_1" class="com.huz.bean.employee"></bean>

    <bean id="id_2" class="com.huz.bean.employee"></bean>

    <bean id="id_3" class="com.huz.bean.employee"></bean>

    <bean id="id_4" class="com.huz.bean.employee"></bean

集合注入部分的提取

概念

  • 在外部声明集合元素在内部(用集合的id)进行引用注入,而不是直接在内部声明

修改名称空间为util

<?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:util="http://www.springframework.org/schema/util"

       xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/util

http://www.springframework.org/schema/util/spring-util.xsd">

   

</beans>

外部集合的声明

    <!--util后面为集合的类型,可以是setmapid为声明此集合的id以便引用-->

    <util:list id="list_1">

        <value>value_1</value>

        <value>value_2</value>

        <value>value_3</value>

        <value>value_4</value>

    </util:list>

在域中注入外部集合

    <!--集合对象的外部引用注入-->

    <bean id="collection_2" class="com.huz.bean.collection">

   

        <property name="list" ref="list_1">

        </property>

   

    </bean>

有参构造注入

方式

通过在配置文件中,列出要调用的构造器的参数和值的方式调用该类的某一个构造器,从而进行属性注入

格式

    <bean id="id_2" class="com.huz.Service.Servlet_1">

   

        <!--bean标签包围pconstructor-ar标签,配置文件会去匹配符合参数列表的构造器进行创建对象-->

        <constructor-arg name="parameter_1" value="value_1"></constructor-arg>

        <constructor-arg name="parameter_2" value="value_2"></constructor-arg>

   

    </bean>

实例

配置

技术分享图片

调用的构造器

技术分享图片

p 名称空间注入

说明

  • 使用 p 名称空间注入,可以简化基于 xml 配置方式
  • <property> 子元素 简化为 bean标签的元素的属性

步骤

添加

  • 添加 p 名称空间在配置文件中

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

技术分享图片

注入

  • 直接在标签内进行属性注入,在 bean 标签里面进行操作

格式

p:<属性名>="value" //引入常量值

p:<属性名>-ref="引用beanid" //引用其它Bean对象

示例

技术分享图片

  • 为域名为id、time的域分别注入属性

   

自动装配(xml自动装配)

202136

20:34

概念

根据指定装配规则(属性名称或者属性类型),Spring 自动将匹配的属性值进行注入

使用

通过<bean>标签中声明autowire属性来开启自动装配,通过设置autowire的值来设置自动装配的方式

属性

autowire的值

搜索范围

匹配规则

byName

同一个配置文件下的所有bean

  • 寻找其他bean的id值是否和自己域中的任意一个域的名称相同
  • 若是,则把这个bean注入到自己相同的那个的域中

byType

同一个配置文件下的所有bean

  • 寻找其他bean的类型是否和自己域中的任意一个域的类名相同
  • 若是,则把这个bean注入到自己相同的那个的域中

匹配事项

  • 不管是byNamebyType两个都只能匹配一个对象,若匹配时有多个对象可匹配,则报错

示例

byName装配

技术分享图片

byType装配

技术分享图片

   

外部属性文件

202139

20:11

   

原始方式

技术分享图片

缺点

  • 所有的配置项目(属性)都集中在了同一个配置文件中,修改时比较麻烦
  • 程序员需要只把部分属性暴露出来给用户自行设置时,原始方式不能满足

   

外部属性文件

  • 主配置文件中并不直接进行配置,而是引用外部文件的配置
  • 即把一个bean标签的配置项都分散在不同的文件中,以实现配置分类管理的需求

使用

引入 context 名称空间

<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:util="http://www.springframework.org/schema/util"

       xmlns:context="http://www.springframework.org/schema/context"

       xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/util

http://www.springframework.org/schema/util/spring-util.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd">

   

      

</beans>

引入外部属性文件

  • 在主配置文件中使用标签,声明外部属性文件的位置

<!--引入外部属性文件,路径开始位置为classpathsrc-->

<context:property-placeholder location="classpath:jdbc.properties"/>

填充主文件中的属性

  • 在value属性中不再直接填入具体值,而是通过$的形式来代表一个外部值

主文件

value="${自行设定的外部属性名称}"

  • 一般配置文件的外部属性名称可以写为

prop.属性名

以便于区分

外部文件

自行设定的外部属性名称=root

效果

value的值为root

示例

技术分享图片

   

注解管理方式

202139

19:35

   

注解

注解是代码特殊标记格式

格式

@注解名称(属性名称=属性值, 属性名称=属性值..)

使用范围

作用在类上面,方法上面,属性上面

目的

简化 xml 配置

   

准备步骤

添加依赖包

技术分享图片

指定注解扫描的路径

  • 首先要引入context外部空间
  •  

技术分享图片

<context:component-scan base-package="com.huz">

   

</context:component-scan>

  • 扫描的是指定的目录下所有类(包括子包下的类)
  • 使用时,要读入该配置文件,再去getBean

技术分享图片

使用注解

  

   

注解创建对象

202139

21:44

创建对象

Spring 针对 Bean 管理中创建对象提供注解

种类

注解

建议使用的类

@Component

  

@Service

一般用在业务层

@Controller

一般用在表现层

@Repository

一般用在持久层

  • 上面四个注解功能是一样的(可以混用),都可以用来创建 bean 实例

使用

@Component ( vlaue = "自定义id")  //其他标签类似

使用示例

技术分享图片

  • 注解里面 value 属性值可以省略不写(即只写@Component不写时默认值是类名的首字母小写

   

注解注入属性

202139

21:44

   

 

@Autowired

功能

根据属性类型进行自动装配

规则

若一个域的声明前标记了该注释,

  • 若该域是一个类,则Spring会在IOC容器中查找和该域同一个类的对象,注入到该域中
  • 若该是一个接口,则Spring会在IOC容器中查找一个实现了该接口的对象,并把实现类对象赋值给该域

操作

  • 主对象标记添加对象注释
  • 要注入的对象添加创建对象注释
  • 主对象内部标记要注入的域

示例

情景

在Service类中通过注释注入Dao实现类

注入的主对象

技术分享图片

被注入的对象

技术分享图片

@Qualifier

  

功能

  • 和上面@Autowired 一起使用,功能变为根据名称(bean标签中id的值)进行注入
  • 因为一般根据属性类型进行自动装配会有多个结果(比如一个接口可能由多个实现类),则可以通过id值,指定唯一的对象,而不是交给机器来随机选择

格式

@Qualifier(value = "配置beanid")

示例

技术分享图片

@Resource

  

功能

可以根据类型注入,可以根据名称注入

格式

@Resource // 不写name是类型注入

@Resource(name = "配置的beanid") //name的是名称注入

示例

技术分享图片

@Value

  

功能

直接在域声明前,注入普通类型属性

格式

@Value(value = "设定的属性值")

示例

技术分享图片

   

完全注解开发

2021310

19:11

   

原来做法

  • 需要在xml中配置context外部空间并且读入xml文件才能使用注解的管理方式,但是context还是需要在xml中进行配置

   

完全注释开发

不需要任何xml配置文件,完成注解开发

使用

自定义创建配置类,替代 xml 配置文件

@Configuration  //此标签表明 此类是Spring的配置类

   

@ComponentScan (basePackages = {"扫描路径"})

//此注释相当于配置注释的扫描范围,也是从calsspath(src目录开始)

   

public class SpringConfig  //类名可以自己定义

{

    //里面不用写代码

}

加载配置类

技术分享图片

示例

技术分享图片

   

   

bean

202137

21:22

概述

Spring 有两种类型 bean

  • 一种普通 bean
  • 另外一种工厂 bean(FactoryBean)

  

普通 bean

在配置文件中定义 bean 类型就是返回类型

工厂 bean

  • 在配置文件定义 bean 类型可以和返回类型不一样
  • FactoryBean 通常是用来创建比较复杂的bean,一般的bean直接用xml配置即可
  • 如果一个bean的创建过程中涉及到很多其他的bean和复杂的逻辑,用xml配置比较困难,这时可以考虑用FactoryBean,通过编写方法的形式去完成一个类的加载

   

FactoryBean 使用示例

202137

20:38

   

xml配置文件

技术分享图片

技术分享图片

bean对象创建

   

bean_a.class

Object

技术分享图片

判断

是否实现了FactoryBean<T>

  • T为转变后,新对象的类的类型参数

技术分享图片技术分享图片

是,调用

getObject()

   

bean_a.class

Object

   

调用方法

转换对象

技术分享图片

技术分享图片技术分享图片技术分享图片

   

技术分享图片

bean_b.class

Object

技术分享图片技术分享图片

放入

放入

   

IOC容器

获取bean_b

获取bean_a

技术分享图片

   

技术分享图片

注意事项

  • 即使配置的时候是bean_a,由于容器中最终放入的对象

已经转化成了bean_b

  • 所以在使用视角,要把此Object看成bean_b类对象

   

bean的作用域

202137

21:22

   

概述

  • 在 Spring 里面,可以设置创建 bean 实例是单实例还是多实例
  • 在 Spring 里面,默认情况下,bean 是单实例对象

设置方法

方法

  • 在配置文件对应的bean的<bean Scope="" >标签中设置scope字段值来设置是单例还是多例

字段

scope属性值

意义

Scope="singleton"

默认值,表示是单实例对象

Scope="prototype"

表示是多实例对象

单实例

定义

  • 每次getbean()后返回的对象都是同一个对象
  • 加载 spring 配置文件时候就会创建单实例对象

配置

技术分享图片

执行代码

技术分享图片

效果

技术分享图片

多实例

定义

  • 每次getbean()后返回的对象都是不同的对象
  • 不是在加载 spring 配置文件时候创建对象,在调用 getBean 方法时候创建多实例对象
  • 原来bean设置与FactoryBean是否多例的关系:

原来bean设置

FactoryBeanisSingleton()返回

最终对象

多例

true/false

多例

单例

true

单例

单例

false

多例

配置

技术分享图片

执行代码

技术分享图片

效果

技术分享图片

   

bean生命周期

202137

22:18

   

定义

从对象创建到对象销毁的过程

阶段

实例化 Instantiation

通过构造器创建 bean 实例(Spring调用无参数构造)

属性赋值 Populate

为 bean 的属性设置值和对其他 bean 引用(Spring调用 set 方法)

初始化 Initialization

调用 bean 的初始化的方法(需要自己声明初始化方法并把方法名配置到配置文件中

  

bean 可以使用了(对象获取到了)

销毁 Destruction

当容器关闭时候,需要程序员手动调用 bean 的销毁的方法(需要自己声明初始化方法并把方法名配置到配置文件中

  

主要逻辑都在doCreate()方法中,逻辑很清晰,就是顺序调用以下三个方法

createBeanInstance()

实例化

populateBean()

属性赋值

initializeBean()

初始化

源码部分

技术分享图片

销毁,是在容器关闭时调用的,详见ConfigurableApplicationContext#close()

方法实现

  

自定义初始化方法

方式

  • 需要在对应的bean类中声明一个自定义的初始化方法
    • 方法名没有限制
  • 在配置文件中根据该方法名配置到对应的<bean>标签中

格式

<!--    InitMethod_name:为自己声明的初始化方法的方法名-->

   

    <bean name="id" class="class‘spackage"

init-method="InitMethod_name">

   

    </bean>

运行

  • String会在属性赋值之后自动调用该方法

自定义销毁方法

方式

  • 需要在对应的bean类中声明一个自定义的初始化方法
    • 方法名没有限制
  • 在配置文件中根据该方法名配置到对应的<bean>标签中

格式

<!--    destroyMethod_name 为自己声明的销毁方法的方法名-->

   

    <bean name="id" class="class‘spackage"

destroy-method="destroyMethod_name">

   

    </bean>

运行

  • 当调用下列String的销毁方法时,该配置的销毁方法会被String自动调用

FileSystemXmlApplicationContext.close

ClassPathXmlApplicationContext.close

  • 当调用close之后,该ApplicationContext所读入的配置文件中的所有创建的bean都会被销毁

常用扩展点

  

影响多个Bean的接口

种类

类名

作用时机

InstantiationAwareBeanPostProcessor

实例化阶段的前后

BeanPostProcessor

初始化阶段的前后

图例

技术分享图片

使用

实现

  • 单独创建一个类(处理类),此类专门用来实现InstantiationAwareBeanPostProcessor、BeanPostProcessor接口中处理bean的方法

技术分享图片

技术分享图片

绑定

  • 在配置文件中使用<bean>标签登记该实现了上述接口的类(处理类),登记步骤和普通类的登记一样
  • 则在运行时,和该配置类配置在同一个配置文件中其他所有普通bean类
    • 在整个生命周期中,一旦普通bean到达了该处理类实现的处理方法的对应作用时机,则Spring会对这个普通bean调用一次处理类所实现的处理方法
    • 实际上配置类所实现的方法是处理普通bean的方法而不是给普通bean调用的方法
      • 方法调用主体是配置类对象,而普通bean只是方法的类型参数

技术分享图片

周期图

技术分享图片

   

   

Interface BeanFactory

202136

19:20

Info

  

Fields

  

Constructor

Constructor

Description

  

  

  

Method Summary

  • Method

      

  • Description

  

<T> T

getBean(Class<T> requiredType)

Return the bean instance that uniquely matches the given object type, if any.

<T> T

getBean(Class<T> requiredType, Object... args)

Return an instance, which may be shared or independent, of the specified bean.

Object

getBean(String name)

Return an instance, which may be shared or independent, of the specified bean.

<T> T

getBean(String name, Class<T> requiredType)

Return an instance, which may be shared or independent, of the specified bean.

Object

getBean(String name, Object... args)

Return an instance, which may be shared or independent, of the specified bean.

   

Interface ApplicationContext

202136

19:28

Info

  

Fields

  

Constructor

Constructor

Description

  

  

  

Method Summary

  • Modifier and Type
  • Method

  

  • Description

  

  

  

  

   

Class ClassPathXmlApplicationContext

202136

19:31

Info

Standalone XML application context, taking the context definition files from the class path

Fields

  

Constructor

Constructor

ClassPathXmlApplicationContext(String configLocation)

  • Create a new ClassPathXmlApplicationContext, loading the definitions from the given XML file and automatically refreshing the context.

configLocation

技术分享图片

  • classpath路径也可以看成是src目录

Method Summary

  • Modifier and Type
  • Method

  

  • Description

  

  

  

  

Methods inherited from class org.springframework.context.support.AbstractApplicationContext

close

   

Class FileSystemXmlApplicationContext

202136

19:31

Info

  

Fields

  

Constructor

Constructor

  

FileSystemXmlApplicationContext(String configLocation)

Create a new FileSystemXmlApplicationContext, loading the definitions from the given XML file and automatically refreshing the context.

configLocation

技术分享图片

Method Summary

  • Modifier and Type
  • Method

  

  • Description

  

  

  

  

Methods inherited from class org.springframework.context.support.AbstractApplicationContext

close

   

Class AnnotationConfigApplicationContext

2021310

19:32

Info

  

Fields

  

Constructor

AnnotationConfigApplicationContext(Class<?>... componentClasses)

Create a new AnnotationConfigApplicationContext, deriving bean definitions from the given component classes and automatically refreshing the context.

Method Summary

  • Modifier and Type
  • Method

  

  • Description

  

  

  

  

   

   

Interface FactoryBean<T>

202137

21:59

Info

  

Fields

  

Constructor

Constructor

Description

  

  

  

Method Summary

  • Modifier and Type
  • Method

  

  • Description

  

Modifier and Type

Method and Description

T

getObject()

Return an instance (possibly shared or independent) of the object managed by this factory.

Class<?>

getObjectType()

Return the type of object that this FactoryBean creates, or null if not known in advance.

default boolean

isSingleton()

Is the object managed by this factory a singleton? That is, will getObject() always return the same object (a reference that can be cached)?

   

   

Interface InstantiationAwareBeanPostProcessor

2021310

19:34

Info

  

Fields

  

Constructor

Constructor

Description

  

  

  

Method Summary

  • Modifier and Type
  • Method

  

default boolean

postProcessAfterInstantiation(Object bean, String beanName)

Perform operations after the bean has been instantiated, via a constructor or factory method, but before Spring property population (from explicit properties or autowiring) occurs.

default Object

postProcessBeforeInstantiation(Class<?> beanClass, String beanName)

Apply this BeanPostProcessor before the target bean gets instantiated.

default PropertyValues

postProcessProperties(PropertyValues pvs, Object bean, String beanName)

Post-process the given property values before the factory applies them to the given bean, without any need for property descriptors.

   

   

Interface BeanPostProcessor

2021310

19:36

Info

  

Fields

  

Constructor

Constructor

Description

  

  

  

Method Summary

  • Modifier and Type
  • Method

  

default Object

postProcessAfterInitialization(Object bean, String beanName)

Apply this BeanPostProcessor to the given new bean instance after any bean initialization callbacks (like InitializingBean‘s afterPropertiesSet or a custom init-method).

default Object

postProcessBeforeInitialization(Object bean, String beanName)

Apply this BeanPostProcessor to the given new bean instance before any bean initialization callbacks (like InitializingBean‘s afterPropertiesSet or a custom init-method)

 

IOC接口

原文:https://www.cnblogs.com/huz-han/p/14738795.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!