• Spring学习笔记(三)之装配Bean


    除了组件扫描与自动装配之外还有基于Java代码的装配与基于XML的装配.

    有一些场景是我们不能用自动装配的,比如我们要给第三方库中的组件装配到我们的应用中,这时自动装配无效,因为自动装配只能扫描本应用中的包.

    这时我们就要在基于代码代码的装配和基于XML的装配中进行选择,前面我们说到了JavaConfig相比XML更强大更安全.

    一.基于Java代码的装配Bean(JavaConfig)

    但是JavaConfig又与Java有所区别.

    • 概念上  JavaConfig是配置 与应用的其他代码业务逻辑不同  他不包含任何逻辑代码  也不应该被放入到任何逻辑中
    • 分布上  会将JavaConfig放到单独的包中

    1.1 创建配置类

    1 package test;
    2 
    3 
    4 @Configuration
    5 public class DogComfig{
    6 }

    @Configuration说明此类是一个配置类,但是我们没有写@ComponentScan注解,所以此类没有作用.
    1.2声明简单的Bean

    在JavaConfig中声明bean,则需要些一个方法,让这个方法返回我们所需要类型的实例,然后给这个Bean加上@Bean注解.@Bean注解会告诉容器这个方法返回一个对象,改对象要注册为Spring 应用上下文中的bean.方法体中包含了最终产生Bean实例的逻辑.默认bean的id是方法名.当然也可以用之前学过的方法命名@Bean(" ");逻辑可以无限复杂,只要最后返回的是一个对象就可以.

    package test;
    
    public Dog setDogs(){
     return new setDogs();
    }

    1.3借助JavaConfig实现注入

    在JavaConfig装配bean的最简单的方式就是引用创建bean的方法,如:

    @Bean
    publci playGame playGames(){
       return new playGame(setDogs());
     }

    这里我们写一个一个玩游戏的方法,并将setDogs方法传入表示是和狗狗玩游戏,这里直的注意的是,Dog并不是通过调用setDogs()方法获得的,是因为在Spring会拦截所有对有@Bean注解的调用,并确保直接返回改方法创建的Bean,而不是每次都创建一个Bean.因为Spring的bean是单例的,所以在一个应用上下文中获得同一个方法的返回的bean是相同的.

    最好的写法是这样的:

    @Bean
    publci playGame playGames(Dog){
       return new playGame(Dog);
     }

    二.通过XML装配Bean
    2.1创建XML配置规范

    在使用XML为Spring装配Bean之前,你需要创建一个新的配置规范.如同JavaConfig中的@Configuration注解

    <?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" xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
      
         <!-- configuration  write  here-->
    </beans>

    用装配Bean最基本的XML元素包含在Spring-beans模式之中,beans是xml中所有元素的根元素.
    2.2声明一个简单的bean

    这里需要用到spring-beans模式中的另外一个元素:<bean>,此元素相当于JavaConfig中的@bean.我们按照这种格式声明:

    <bean id="dog" class = "test.setDogs"> 最好写id不写的情况下id是test.Dogs#0.#0是用来计数的,用来区分相同类型的bean. bean的id我们会一直用到.

    解释:有了这个bean你就不用再去创建这个bean的实例,当Spring发现这个bean时会通过setDogs的默认构造器来创建Bean.

    2.3借助构造器实例化Bean

    在xml中声明DI时,会有多种可选的配置方案和风格.具体到构造器注入,有两种选择:

    • <constructor-arg>元素
    • 使用Spring 3.0的c-命名空间

    <bean id =" "  class =" ">

    <constructor-arg ref = " ">

    </bean>

    Spring遇到这个<bean>会创造一个实例,<constructor-arg>元素会告知Spring要将一个ID为ref中的值得bean传递到构造器中.

    命名空间的方法更简单,但是不好理解,但是强烈建议:

    <bean id =" "  class =" "  c:cd-ref=" ">

    讲解如图:

    明天补上

  • 相关阅读:
    Java沉思录之重识String
    【python】 爬虫-爬取新闻
    【大数据】水质分析————(数据预处理)对水质图片的处理
    神经网络 鸢尾花数集预测
    【python 基础】词云
    【数据结构】字符串匹配
    【算法】 分治
    【数据结构】队列
    【数据结构】栈 的 顺序表示
    【数据结构】 线性表 的 链式存储结构
  • 原文地址:https://www.cnblogs.com/daweige/p/7912012.html
Copyright © 2020-2023  润新知