• Spring 3.x 企业应用实战—— IoC 配置概述



    Spring 配置概述
    用户可以通过属性注入、构造函数注入的方式建立Bean和Bean的依赖;可以通过字面值的方式设置Bean的属性,也可以通过ref引用容器中其他的Bean;Spring为集合
    类提供了专门的配置标签;使用Spring简化配置方式可以让配置文件更加紧凑;可以通过配置文件中的<bean>标签建立关联、继承、依赖、引用的关系,合理地使用这些关系可以简化配置、提高配置质量;Spring提供了5个Bean作用范围,在Web应用环境下,可以使用request、 session和globalSession的Bean作用域;通过@Component及另外三个衍型注解(@Repository、@Service、@Controller)配合@Autowired
    就可以很好地使用基于注解的配置进行Bean的定义和注入,这种方式比在XML文件中通过<bean>提供配置文件更加简单;任务POJO标注了@Configuration
    注解后就可以为Spring容器提供Bean的定义信息,在类方法中标注@Bean相当于定义了一个Bean,同时还提供了Ben的实例化逻辑。由于Bean的实例化逻辑
    是在方法中定义的,因此他可以应对一些复杂的Bean的实例化场景。不管配置使用何种配置方式,Spring都可以很好地将他们整合起来,在Spring容器内部,
    这些不同方法的Bean定义信息是大体相同的,三者指甲并不存在谁替代谁的问题,他们都有自己最合适的应用场合。

    一、Spring容器高层视图
      Bean的实现类
      Bean的属性信息,数据库连接数、用户名、密码
      Bean的依赖
      Bean的行为配置

    二、基于XML的配置

    schema格式

    <?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.aop="http://www/springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/beans/spring-aop-3.0.xsd "> <!--默认命名空间的配置--> <bean id="a" class=""/> <!--aop命名空间的配置--> <aop:config> </aop:config> </beans>

      

    依赖注入
      1、属性注入
      2、构造函数注入
        按照类型匹配入参
        按照索引匹配入参
        联合使用类型和索引匹配入参
        通过自身类型反射匹配入参
      3、工厂方法注入
        由于Spring IoC容器以框架的形式提供工厂方法的功能,并以透明的方式开放给开发者,所以很少需要手工编写基于工厂方法的类。不过在一些遗留系统或第三方类库中,我们还会碰到工厂方法,这时用户可以使用Spring工厂方法注入的方式进行配置。
        非静态工厂方法
        静态工厂方法
      4、方法注入
        lookup方法注入 无状态Bean的作用域一般配置为singletion单实例模式,如果我们往singletion的类A中注入prototype的类B,并希望每次调用A的getB()都 能返回一个新的B,使用传统的注入方法无法实现这样的要求。使用lookup方法注入可以实现
    方法替换 可以使用Bean的方法去替换另一个Bean的方法

    注入参数详解
      1、字面值
      2、引用其他Bean
      3、内部Bean
      4、null值 <value></value>
      5、级联属性 <property name="a.b.c" value="">
      6、集合类型属性

    简化配置方式
      1、字面值属性
      2、引用对象属性
      3、使用p命名空间
      4、自动装配

    <bean>之间的关系
      1、继承
      2、依赖
      3、引用

    整合多个配置文件
      1、在启动Spring容器时,通过一个Spring数组来指定这些配置文件
      2、应用层面提供一个整合的配置文件,通过<import>将各个模块整合起来,这样容器在启动时,只需要关注这个整合的配置文件就可以了

    Bean的作用域
      1、singleton
      一般情况下,无状态或者状态不可变的类适合使用单例类。在传统开发中,由于Dao类执有Connection这个非线程安全的变量而没有采用单例模式
    而在Spring环境下,对于所有的Dao类都可以采用单实例模式,因为Spring利用AOP和LocalThread的功能,对非线程安全的类的变量(或称状态)
    进行了特殊的处理,使这些非线程安全的类变成线程安全的类。
      2、prototype
      3、request作用域
      4、session作用域
      5、globalSession作用域

    FactoryBean
    实例化Bean得过程如果比较复杂,可以使用Spring提供的 org.springframework.beans.factory.FactoryBean工厂类接口定制实例化Bean的逻辑

    三、基于注解的配置

      @Compoment: Spring容器自动将POJO转换为容器管理的Bean;
      @Repository: 用于对Dao实现类进行标注;
      @Service:用于对Service实现类进行标注;
      @Controller:用于对Controller实现类进行标注

    使用注解配置信息启动Spring容器
      声明context命名空间,扫描类包以应用注解定义的Bean <context:component-scan base-package="">

    自动装配Bean
      通过@Autowired进行自动注入
      使用@Auto的required属性
      使用@Qualifier指定注入Bean的名称
      

    对类方法进行标注


    对集合类进行标注


    对标准注解的支持
      @Resource 自动采用标注处的变量名或方法名作为Bean的名称
      @Inject

    Bean作用范围及生命过程方法
      @Scope指定Bean的作用范围
      @PostConstruct @PreDestory改变Bean的生命过程

    四、基于Java类的配置
    使用Java类提供Bean定义信息
      普通POJO只要标注@Configuration注解,就可以为Spring容器提供Bean定义的信息了

    使用基于Java类的配置信息启动Spring容器
      使用AnnotationConfigApplicationContext
      通过XML配置文件引用@Configuration的配置 <context:component-scan base-package="" resource-pattern=".class">
      通过 Configuration配置类引用XMl配置信息 @ImportResurce

     

  • 相关阅读:
    Vue
    前端笔试、面试题
    npm下载文件临时目录、实际存放目录路劲
    ES6
    Electron – 基础学习(3): 项目打包成exe桌面应用 之electron-builder
    Electron+Vue – 基础学习(2): 项目打包成exe桌面应用
    Electron+Vue – 基础学习(1): 创建项目
    软件需求膨胀系数
    职业女性确实处于劣势吗?记一次不甚严谨的考据 -- 向胡适之先生的遥远致敬
    15篇干货博客 38本书 4门公开课 减掉20斤体重 我的2014总结
  • 原文地址:https://www.cnblogs.com/renwei/p/5733958.html
Copyright © 2020-2023  润新知