• Spring3.0官网文档学习笔记(八)--3.4.3~3.4.6


    3.4.3 使用depends-on
        使用depends-on能够强制使一个或多个beans先初始化,之后再对这个bean进行初始化。

        多个bean之间用“,”、“;”、“ ”隔开。

    <bean id="beanOne" class="ExampleBean" depends-on="manager"/>
    
    <bean id="manager" class="ManagerBean" />
    <bean id="beanOne" class="ExampleBean" depends-on="manager,accountDao">
    <property name="manager" ref="manager" />
    </bean>
    
    <bean id="manager" class="ManagerBean" />
    <bean id="accountDao" class="x.y.jdbc.JdbcAccountDao" />
    3.4.4 Lazy-initialized beans
        声明lazy-init="true"之后,仅仅有在第一次请求的时候才会对bean进行初始化,不会在容器初始化的时候初始化。

    <bean id="lazy" class="com.foo.ExpensiveToCreateBean" lazy-init="true"/>
    
    <bean name="not.lazy" class="com.foo.AnotherBean"/>
        当然,假设一个“not lazy-initialized”bean依赖于一个“lazy-initialized”bean,那么ApplicationContext会在启动的时候创建“lazy-initialized”bean

    <beans default-lazy-init="true">
      <!-- no beans will be pre-instantiated... -->
    </beans>
    3.4.5 Autowiring collaborators(自己主动装配合作者)
        长处:
        1、明显降低指定properties货构造器属性;
        2、当对象更新时,能够自己主动更新配置而不须要手动改动配置

    Table 3.2. Autowiring modes

    Mode Explanation
    no

    不自己主动装配。bean的引用必须通过ref元素。

    byName   

    依据属性名称自己主动装配。某个bean定义为byName,而且它有一个叫master的属性,那么Spring查找定义为master属性的bean,然后将它注入进去

    byType

    假设某个bean的属性的类型存在的话,就用这个类型的对象注入,假设存在多个,那么抛出异常,假设没有匹配到的话,当做没有注入看待

    constructor

    与byType类似,只是是提供给构造器的參数

    3.4.5.1 自己主动装配的约束与缺点
        缺点:
        1、properties和constructor-arg明白的依赖设置一般会覆盖自己主动装配。不能自己主动装配那些简单的properties,如primitives,String,Classes
        2、自己主动装配没有显示配置来的准确;

       下面暂缺

    3.4.6 方法注入
        这种方法放弃了IoC。通过实现ApplicationContextAware接口,然后通过setApplicationContext方法获取ApplicationContext,再通过getBean方法来获取。

    // a class that uses a stateful Command-style class to perform some processing
    package fiona.apple;
    
    // Spring-API imports
    import org.springframework.beans.BeansException;
    import org.springframework.context.Applicationcontext;
    import org.springframework.context.ApplicationContextAware;
    
    public class CommandManager implements ApplicationContextAware {
    
     private ApplicationContext applicationContext;
    
     public Object process(Map commandState) {
        // grab a new instance of the appropriate Command
        Command command = createCommand();
        // set the state on the (hopefully brand new) Command instance
        command.setState(commandState);
        return command.execute();
     }
    
     protected Command createCommand() {
        // notice the Spring API dependency!
        return this.applicationContext.getBean("command", Command.class);
     }
    
     public void setApplicationContext(ApplicationContext applicationContext)
                                                                      throws BeansException {
        this.applicationContext = applicationContext;
     }
    }


  • 相关阅读:
    【转】Eclipse插件开发之基础篇(1) 插件开发的基础知识
    js获取周.html
    Go语言 基础
    MySQL replace into
    元认知:思考“何为思考”
    redis 流水线
    关于Blog现象的一些思考。
    [LCS]LCS2005服务器应用程序
    [WAP]dotNet在WAP应用开发中实现按指定页数翻页的解决方案
    [Cache]深入学习Enterprise Library for .NET Framework 2.0的Cache机制——分析篇
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/3815241.html
Copyright © 2020-2023  润新知