`
zyongking
  • 浏览: 57402 次
  • 性别: Icon_minigender_1
  • 来自: 湖北
社区版块
存档分类
最新评论

spring 的配置详解及容器

阅读更多

什么是bean?

bean就是由Spring容器初始化、装配及被管理的对象,除此之外,bean就没有特别之处了(与应用中的其他对象没有什么区别)。而bean定义以及bean相互间的依赖关系将通过配置元数据来描述。

 

1、 bean的配置:

生命周期

1> bean的定义(见下一页表格附件)

2> bean的初始化(两种方式):

·在配置文档中通过指定init-method属性来完成(推荐)

·实现org.springframework.beans.factory.InitializingBean接口

3> bean的使用(三种)

·详细见第2节。

4> bean的销毁(两种方式):

·在配置文档中通过指定destroy-method属笥来完成(推荐)

·实现org.springframework.beans.factory.DisposableBean接口

ref的属性指定依赖的三种模式:

1> local性性指定:被参考引用的bean在同一个xml文件中,且是用id命名的。

2> bean属性指定:同一个或者不同的xml中均可(推荐)

3> parent属性指定:引用父bean

 

Bean自动装配的5种模式  autowire=***

1> byName模式  按名字自动装配

2> byType模式  按类型自动装配

3> constructor模式 按构造函数的类型自动装配

4> autodetect模式 自动按先constructorbyType模式匹配。

5> no模式 (默认) 不自动装配

 

Bean依赖检查的4种模式 dependency-check = ***

1> simple  对基本类型、字符串和集合进行依赖检查

2> object  对依赖的对象进行检查

3> all  对全部属属性进行检查

4> none  (默认)不检查

 

集合的注入方式

1> List

2> Set

3> Map

4> Properties

 

Bean如下:

示例代码:

public class SomeBean { 
    private String[] someStrArray; 
    private SomeObj[] someObjArray; 
    private List someList; 
    private Map someMap; 

    private Set test; 

private Properties test2; 


    ....

}

 示例配置:

<beans> 
    <bean id="someBean" class="onlyfun.caterpillar.SomeBean"> 
        <property name="someArray"> 
            <list> 
                <value>Hello!Justin!</value> 
                <value>Hello!Momor!</value> 
                <value>Hello!Bush!</value> 
            </list> 
        </property> 
        <property name="someObjArray"> 
            <list> 
                <ref bean="someObj1"/> 
                <ref bean="someObj2"/> 
            </list> 
        </property> 
        <property name="someList"> 
            <list> 
                 <value>Hello!Justin!</value> 
                 <ref bean="someObj1"/> 
                 <ref bean="someObj2"/> 
            </list> 
        </property> 
        <property name="someMap"> 
            <map> 
                 <entry key="somekey1"> 
                     <ref bean="someObj1"/> 
                 </entry> 
                 <entry key="somekey2"> 
                     <value>Hello!Justin!</value> 
                 </entry> 
            </map> 
        </property>

<property name="test"> 

<set> 
    <value>a set element</value> 
    <ref bean="otherBean"/> 
    <ref bean="anotherBean"/> 
</set>

</property>

<property name="test2"> 

            <props> 
                <prop key="someProkey1"> 
                    someProValue1 
                </prop> 
                <prop key="someProkey2"> 
                    someProValue2 
                </prop> 
            </props> 
        </property>
    </bean> 
</beans>

 

可以配置的项目有:
1. Bean属性值及依赖关系(对其他Bean的引用)
2. Bean创建模式(是否Singleton模式,即是否只针对指定类维持全局唯一的实例)
3. Bean初始化和销毁方法
4. Bean的依赖关系
下面是一个较为完整的Bean配置示例:

<beans>
<description>Spring Bean Configuration Sample</description>
<bean
id="TheAction" class="net.xiaxin.spring.qs.UpperAction" singleton="true" init-method="init" destroy-method="cleanup" depends-on="ActionManager"
>
<property name="message">
<value>HeLLo</value> 
</property>
<property name="desc">
<null/>
</property>
<property name="dataSource">
<ref local="dataSource"/>
</property>
</bean>
<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/sample</value>
</property>
</bean>
</beans>

 ⑴

 

 

 

2管理bean
beans包提供了以编程的方式管理和操控bean的基本功能,而context包下的ApplicationContext以一种更加面向框架的方式增强了BeanFactory的功能。

1> BeanWrapper  

1> BeanFactory 

2> ApplicationContext(推荐使用的方式)
由于ApplicationContext包括了BeanFactory所有的功能,所以通常建议优先采用ApplicationContext

ApplicationContext actx2= new FileSystemXmlApplicationContext("WebRoot\\WEB-INF\\applicationContext.xml");

 

或者将applicationContext.xml放在src

ApplicationContext actx3= new ClassPathXmlApplicationContext("applicationContext.xml");

 id
Java BeanBeanFactory中的唯一标识,代码中通过BeanFactory获取
JavaBean实例时需以此作为索引名称。
 class
Java Bean 类名
 singleton
指定此Java Bean是否采用单例(Singleton)模式,如果设为“true”,则在
BeanFactory作用范围内,只维护此Java Bean的一个实例,代码通过BeanFactory
获得此Java Bean实例的引用。反之,如果设为“false”,则通过BeanFactory获取
Java Bean实例时,BeanFactory每次都将创建一个新的实例返回。
 init-method
初始化方法,此方法将在BeanFactory创建JavaBean实例之后,在向应用层返回引
用之前执行。一般用于一些资源的初始化工作。
 destroy-method
销毁方法。此方法将在BeanFactory销毁的时候执行,一般用于资源释放。
 depends-on
Bean依赖关系。一般情况下无需设定。Spring会根据情况组织各个依赖关系的构建工作(这里
示例中的depends-on属性非必须)。
只有某些特殊情况下,如JavaBean中的某些静态变量需要进行初始化(这是一种Bad
Smell,应该在设计上应该避免)。通过depends-on指定其依赖关系可保证在此Bean
载之前,首先对depends-on所指定的资源进行加载。
 <value>
通过<value/>节点可指定属性值。BeanFactory将自动根据Java Bean对应的属性
类型加以匹配。
下面的”desc”属性提供了一个null值的设定示例。注意<value></value>代表一
个空字符串,如果需要将属性值设定为null,必须使用<null/>节点。
 <ref>
指定了属性对BeanFactory中其他Bean的引用关系。示例中,TheActiondataSource
性引用了iddataSourceBeanBeanFactory将在运行期创建dataSource bean实例,并将其
引用传入TheAction BeandataSource属性。
下面的代码演示了如何通过BeanFactory获取Bean实例:
InputStream is = new FileInputStream("bean.xml");
XmlBeanFactory factory = new XmlBeanFactory(is);
Action action = (Action) factory.getBean("TheAction");
此时我们获得的Action实例,由BeanFactory进行加载,并根据配置文件进行了初始化和属性设定。
联合上面关于BeanWrapper的内容,我们可以看到,BeanWrapper实现了针对单个Bean的属性设
定操作。而BeanFactory则是针对多个Bean的管理容器,根据给定的配置文件,BeanFactory从中读取
类名、属性名/值,然后通过Reflection机制进行Bean加载和属性设定。

 

 

1
分享到:
评论

相关推荐

    spring IOC容器依赖注入XML配置

    spring IOC容器依赖注入XML配置详解 运行环境:eclipse 构建工具:maven 不提供maven构建,maven用来解决jar包的依赖

    spring的父子容器及配置详解

    本篇文章主要介绍了spring的父子容器及配置详解,详细的介绍了spring父子容器的概念、使用场景和用法,有兴趣的可以了解一下

    spring配置文件详解--真的蛮详细

    Spring配置文件是一个或多个标准的XML文档,applicationContext.xml是Spring的默认配置文件,当容器启动时找不到指定的配置文档时,将会尝试加载这个默认的配置文件。 下面列举的是一份比较完整的配置文件模板,...

    spring jar 包详解

    spring jar 包详解 spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了 spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到spring-mock.jar来进行辅助测试,正式应用...

    Spring Java-based容器配置详解

    主要介绍了Spring Java-based容器配置详解,涉及注解和@Configuration类以及@Beans的相关知识,具有一定参考价值,需要的朋友可以了解。

    《精通Spring2.X企业应用开发详解》随书源码1-15章

    展现层应用 第19章 Spring MVC之一 第20章 Spring MVC之二 第21章 集成其他Web框架 第6篇 其他 第22章 Spring应用的测试 第23章 Spring工具类盘点 附录A 各种数据库连接配置及驱动 附录B ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1 系统概述 13.2 需求分析 13.2.1 系统用例图 ...

    Spring 2.5 jar 所有开发包及完整文档及项目开发实例

    spring jar 包详解spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了 spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到spring-mock.jar来进行辅助测试,正式应用系统...

    spring杂谈 作者zhang KaiTao

    1.18 不重复配置——利用Spring通用化配置 1.19 @Value注入Properties 错误的使用案例 1.20 @Value注入Properties 使用错误的案例 1.21 扩展SpringMVC以支持更精准的数据绑定 1.22 扩展SpringMVC以支持更精准的数据...

    《精通Spring2.X企业应用开发详解》16-19章

    展现层应用 第19章 Spring MVC之一 第20章 Spring MVC之二 第21章 集成其他Web框架 第6篇 其他 第22章 Spring应用的测试 第23章 Spring工具类盘点 附录A 各种数据库连接配置及驱动 附录B ...

    spring揭秘pdf版

    详解spring框架的ioc容器,aop切面以及mvc配置映射等核心设计思想。语言风趣,值得一看。

    spring.doc

    2.2 Spring配置文件 7 2.3 Spring API 8 3 Spring基本功能详解 8 3.1 SpringIOC 8 3.2别名Alias 11 别名拓展: 11 3.3 Spring容器内部对象的创建 12 Spring容器内部对象创建拓展: 12 3.3.1使用类构造器实例化(默认...

    详解在Docker容器中运行Spring Boot应用

    spring Boot简化了Spring应用的开发过程,遵循约定优先配置的原则提供了各类开箱即用(out-of-the-box)的框架配置。另一方面,Spring Boot还具备将代码直接构建为可执行jar包的能力,这个jar包是一个可以独立运行的...

    Spring-Reference_zh_CN(Spring中文参考手册)

    3.3.3. bean属性及构造器参数详解 3.3.3.1. 直接量(基本类型、Strings类型等。) 3.3.3.2. 引用其它的bean(协作者) 3.3.3.3. 内部bean 3.3.3.4. 集合 3.3.3.5. Nulls 3.3.3.6. XML-based configuration metadata ...

    Spring整合Hibernate 详解.doc

    6.5 Spring整合Hibernate 6.6 Spring提供的DAO支持 6.5.2 管理Hibernate的SessionFactory 6.5.3 使用HibernateTemplate ...6.5.7启动web容器读取xml配置文件 6.5.8了解继承自HibernateDaoSupport类DAO

    《精通Spring2.X企业应用开发详解》20-23

    展现层应用 第19章 Spring MVC之一 第20章 Spring MVC之二 第21章 集成其他Web框架 第6篇 其他 第22章 Spring应用的测试 第23章 Spring工具类盘点 附录A 各种数据库连接配置及驱动 附录B ...

    Spring Web零xml配置原理以及父子容器关系详解

    主要介绍了Spring Web零xml配置原理以及父子容器关系详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    Docker容器详解.docx

    Docker容器详解 1 1. 介绍 1 1.1. 什么是Docker? 1 1.2. 为什么需要Docker? 1 1.3. Docker可以干嘛? 1 1.4. 什么是Dockfile? 1 1.5. 什么是Docker Compose? 5 2. 环境搭建 8 2.1. Docker环境准备 8 ...

    跟我学spring3(1-7)

    【第二章】 IoC 之 2.2 IoC 容器基本原理 ——跟我学Spring3 【第二章】 IoC 之 2.3 IoC的配置使用——跟我学Spring3 【第三章】 DI 之 3.1 DI的配置使用 ——跟我学spring3 【第三章】 DI 之 3.2 循环依赖 ——跟我...

    Spring 2.0 开发参考手册

    3.3.3. bean属性及构造器参数详解 3.3.4. 使用depends-on 3.3.5. 延迟初始化bean 3.3.6. 自动装配(autowire)协作者 3.3.7. 依赖检查 3.3.8. 方法注入 3.4. bean的作用域 3.4.1. Singleton作用域 3.4.2. ...

Global site tag (gtag.js) - Google Analytics