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;
 }
}

Spring3.0官网文档学习笔记(八)--3.4.3~3.4.6,布布扣,bubuko.com

时间: 2024-10-27 13:14:38

Spring3.0官网文档学习笔记(八)--3.4.3~3.4.6的相关文章

Spring3.0官网文档学习笔记(五)--3.3

3.3 概述 Table 3.1. The bean definition Property Explained in... class Section 3.3.2, "Instantiating beans" name Section 3.3.1, "Naming beans" scope Section 3.5, "Bean scopes" constructor arguments Section 3.4.1, "Dependen

Spring3.0官网文档学习笔记(六)--3.4.1

3.4 依赖 3.4.1 依赖注入 依赖注入两种方式:基于构造器的DI.基于setter方法的DI. 3.4.1.1 基于构造器的DI 参数是引入对象,且之前不存在父-子类关系: package x.y; public class Foo { public Foo(Bar bar, Baz baz) { // ... } } <beans> <bean id="foo" class="x.y.Foo"> <constructor-arg

Spring3.0官网文档学习笔记(七)--3.4.2

3.4.2 依赖与配置的细节 3.4.2.1  Straight values (primitives, Strings, and so on) JavaBeans PropertyEditors被用来转换这些value到实际的类型.? <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <

Spring3.0官网文档学习笔记(四)--3.1~3.2.3

3.1 Spring IoC容器与Beans简介 BeanFactory接口提供对任意对象的配置: ApplicationContext是BeanFactory的子接口,整合了Spring Aop功能,消息资源控制,事件发布,应用层特殊的上下文(在web应用中) 由IoC容器实例化.组装.管理的对象都是Bean 3.2 容器概述 org.springframework.context.ApplicationContext代表Spring IoC容器,并且负责通过读取配置元数据来实例化.配置.组装

Spring3.0官网文档学习笔记(二)

1.3 使用场景 典型的成熟的spring web应用 spring使用第三方框架作为中间层 远程使用场景 EJB包装 1.3.1 依赖管理.命名规则(包) spring-*.jar *号代表的是模块的简写,如:spring-core, spring-webmvc, spring-jms 可以在四个不同的地方找到Spring: http://www.springsource.org/downloads/community  所有的jar包被打包成zip,名称从3.0开始是: org.spring

Spring3.0官网文档学习笔记(一)

Part 1 Spring框架概述 Spring是模块化的,在应用中只需要引入你所需要用到的模块的jar包,其余的jar包不用引入. spring框架支持声明式的事务管理,通过RMI或web service访问你的逻辑,还有许多种方式保存数据. spring被设计成非侵入式的. 1.Spring框架简介 Spring框架提供了应用开发的基础部分,使得我们可以集中精神在业务开发层上. POJOS:plain old Java objects Spring允许创建非侵入式的POJO.这个特性支持Ja

Hibernate 官网文档学习记录

这篇博客主要记录看官方文档时,学习到的要点内容 1.关于XXX.hbm.xml的配置 1)property元素中的type属性值不是java类型也不是sql type类型,是hibernate自己的映射类型.该属性值可以省略,hibernate会在启动的时候通过反射自动的将java类型和sql type类型匹配起来,但有时候会得不到期望的类型,比如java 的util包下的Date类型不知道是转为sql type中的data,time还是timeStamp类型.如果希望启动程序的时候效率高些,建

UGUI官网文档重温笔记——Animation Integration

Unity推荐使用Animator动画来制作UGUI控件的动画效果.先制作好UI控件的Animation片段,然后为控件添加相应的Animator以及过渡参数,控制参数即可控制动画的播放. 例如在一个Button中, 此处将Transition(过渡转换)属性设置为:Animation,然后点击"Auto Generate Animation",即可自动添加带有四个参数的Animator, Unity已经自动添加并设置好带有四个参数的动画状态机.此时只需按下Ctrl+6,单独编辑Nor

mongodb官网文档阅读笔记:write concern

write concern保证了mongodb写操作的级别,不同的write concern设置对应了不同级别的写操作,设置的级别越高,那么写操作的性能的持久化做得越好,但是写性能也就越差.mongodb默认采用 Acknowledged的write concern级别,这也是安全性最高的级别. 在 Acknowledged级别的副本集模式下,mongodb可在客户端设置一个wtimeout值,如果在规定的时间内无法完成这个写操作就返回一个错误,即使它最终可能能够完成. Write Concer