• 【Java高级工程师蜕变之路】010 Spring IOC的应用


    实现说明

    image

    BeanFactory与ApplicationContext的区别

    BeanFactory是整个Spring框架中IOC容器的顶层接口,主要定义容器的基本规范,ApplicationContext是BeanFactory的子接口,具备BeanFactory的所有功能。

    一般称BeanFactory为IOC的基础容器,ApplicationContext是容器的高级接口,有更多功能,比如国际化、资源访问等

    image

    纯XML模式

    bean实例化的三种方式

    方式一:无参构造器(推荐)

    <bean id="connectionUtils" class="com.test.transfer.utils.ConnectionUtils"></bean>
    

    方式二:静态方法

    <bean id="connectionUtilsStatic" class="com.test.transfer.utils.createConnectionFactory" factory-method="getInstanceStatic"/>
    

    方式三:实例化方法

    <bean id="createConnectionFactory" class="com.test.transfer.utils.createConnectionFactory"/>
    <bean id="connectionUtilsInstance" factory-bean="createConnectionFactory" factory-method="getInstance"/>
    

    bean的作用范围和生命周期

    scope:定义bean的作用范围(默认为singleton)

    Singleton:单例,IOC容器中只有一个对象

    单例模式对象的生命周期与容器相同

    prototype:原型,每次请求都是新对象

    多例模式Spring只负责创建,不负责销毁

    request

    session

    application

    websocket

    bean的属性

    id

    class

    name

    factory-bean

    factory-method

    scope

    init-method:初始化方法,必须是无参方法

    destroy-method:对象销毁前执行,只有在scope为sington的时候有效

    DI的依赖注入方式

    set注入

    使用property标签,注入bean使用ref,注入普通值用value

    构造器注入

    使用constructor-arg标签,属性主要使用index/name,ref,value

    复杂类型

    array:array子标签,value/ref

    map:map子标签,entry->key/value

    set:set子标签

    Properties:props子标签,prop->key

    xml与注解相结合模式

    纯xml很少使用

    引入注解不需要额外的jar

    IOC容器的启动仍然从加载xml开始

    使用规则:

    第三方使用xml,自定义使用注解

    @Autowired

    @Qualifier(Autowired无法区分类型的时候结合Autowired,用于区分具体是注入那个类型)

    @Resource(jdk11已经移除,需要引入javax.annotaton-api包使用)

    纯注解模式

    @Configuration:标记为配置类

    @CommonentScan:替代context:component-scan

    @PropertySource:引入外部资源文件

    @Import引入其他配置类

    @Value:变量赋值

    @Bean:自定对象注入到IOC容器

  • 相关阅读:
    HTML学习笔记2
    HTML的学习笔记
    Unsupported major.minor version 51.0解决办法
    java出现The type java.lang.Object cannot be resolved. It is indirectly referenced.....解决办法
    切片
    switch语句
    if-else语句与for循环
    闭包函数
    函数
    常量
  • 原文地址:https://www.cnblogs.com/tangyouwei/p/15690701.html
Copyright © 2020-2023  润新知