• Bean的不同配置方式比较与应用场景


    基于XML配置

    Bean的定义:           在XML文件中通过<bean>元素定义。

    Bean的名称:           通过<bean>的id或name属性定义。

    Bean的注入:           通过<property>子元素或通过p命名空间的动态属性。

    Bean生命过程方法:通过<bean>的init-method和destory-method属性指定Bean实现类的方法名。最多只能指定一个初始化方法和一个销毁方法。

    Bean作用范围:       通过<bean>的scope属性指定。

    Bean延迟初始化:   通过<bean>的lazy-init属性指定,默认为default,继承于<beans>的default-lazy-init设置,该值默认为false。

    应用场景

                     1、Bean实现类来源于第三方类库,如 DataSoure、JdbcTemplate等,因无法在类中标注注解,所以通过XML配置方式比较好。

                     2、命名空间的配置,如aop、context等,只能采用基于XML的配置。

    基于注解配置

    Bean的定义:           在Bean实现类处通过标注@Compoent或衍型类(@Repository、@Service、@Controller)定义Bean。

    Bean的名称:           通过注解的value属性定义,如@Component("name")。默认名称为小写字母开头的类名(不带包名)name。

    Bean的注入:           通过通过在成员变更或方法入参处标注@Autowired,按类型匹配自动注入。还可以配合使用@Qualifier按名称匹配方式注入。

    Bean生命过程方法:通过在目标方法上标注@PostConstruct 和@PreDestroy注解指定初始化或销毁方法,可以定义任意多个。

    Bean作用范围:       通过在类定义处标注@Scope指定,如@Scope("prototype")

    Bean延迟初始化:   通过在类定义处标注@Lazy指定,如@Lazy(true)。

    应用场景

                     1、Bean的实现类是当前项目开发的,可以直接在Java类中使用基于注解的配置。

                     

    基于Java类配置

    Bean的定义:           在标注了@Configuration的Java类中,通过在类方法上标注@Bean定义一个Bean。方法必须提供Bean的实例化逻辑。

    Bean的名称:           通过@Bean的name属性定义,如@Bean("user")。默认名称为方法名。

    Bean的注入:           比较灵活,可以在方法处通过@Autowired使方法入参绑定Bean,然后在方法中通过代码进行注入;还可以通过调用配置类@Bean方法进行注入。

    Bean生命过程方法:通过@Bean的initMethod或destoryMethod指定一个初始化或销毁方法。对于初始化方法来说,可以直接在方法内通过代码的方法灵活定义初始化逻辑。

    Bean作用范围:       通过在Bean方法定义处标注@Scope指定。

    Bean延迟初始化:   通过在Bean方法定义处标注@Lazy指定。

    应用场景

                     1、基于JAVA类配置的优势在于可以通过代码方法控制Bean初始化的整体逻辑。如果实例化Bean的逻辑比较复杂,则比较适合基于Java类配置的方式。

                    

    基于Groovy DSL配置

    Bean的定义:           在Groovy文件中通过DSL定义Bean。

    Bean的名称:           通过Groovy的DSL定义Bean的名称(Bean的类型,Bean构建函数参数)。

    Bean的注入:           比较灵活,可以在方法处通过ref()方法进行注入,如:ref("logDao")。

    Bean生命过程方法:通过bean->bean.initMethod或bean.destoryMethod指定一个初始化或销毁方法。

    Bean作用范围:       通过bean->bean.scope="prototype"指定。

    Bean延迟初始化:   通过bean->bean.lazyInit=true指定。

    应用场景

                     1、基于Groovy DSL配置的优势在于可以通过Groovy脚本灵活控制Bean初始化的过程。如果实例化Bean的逻辑比较复杂,则比较适合基于Groovy DSL配置的方式。

                   

  • 相关阅读:
    【BZOJ4275】[ONTAK2015]Badania naukowe DP
    【BZOJ4295】[PA2015]Hazard 乱搞
    【BZOJ4297】[PA2015]Rozstaw szyn 树形DP
    Windows服务安装异常:System.Security.SecurityException: 未找到源,但未能搜索某些或全部事件日志。不可 访问的日志: Security
    直关的sql 联级更新语句
    c#经典俄罗斯方块 vs2012开发
    转 SSIS处理导入数据时, 存在的更新, 不存在的插入
    WM (Constants)
    数据仓库的模型设计
    BI (商业智能)
  • 原文地址:https://www.cnblogs.com/lwx521/p/7800781.html
Copyright © 2020-2023  润新知