什么是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模式 自动按先constructor后byType模式匹配。
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 Bean在BeanFactory中的唯一标识,代码中通过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的引用关系。示例中,TheAction的dataSource属
性引用了id为dataSource的Bean。BeanFactory将在运行期创建dataSource bean实例,并将其
引用传入TheAction Bean的dataSource属性。
下面的代码演示了如何通过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 配置文件详解 Spring 配置文件是 Spring 框架中最重要的配置文件之一,它负责定义和配置应用程序的Bean对象,以及它们之间的依赖关系。Spring 配置文件通常以XML文件的形式存在,文件名通常为...
Spring 配置文件详解 Spring 配置文件是指-guide Spring 工厂进行 Bean 生产、依赖关系注入(装配)及 Bean 实例分发的“图纸”。Java EE 程序员必须学会并灵活应用这份“图纸”准确地表达自己的“生产意图”。...
### Spring配置文件详解 #### 一、引言 在Java Web开发领域,Spring框架因其强大的功能和灵活性而受到广泛欢迎。对于初学者来说,理解Spring的配置方式是至关重要的第一步。本文将详细介绍Spring中常见的配置文件...
5. 配置详解:Spring 配置可以通过 XML 文件或注解完成。XML 配置文件通常包含 Bean 的定义、依赖关系和属性值。注解配置则允许在类或方法上直接声明元数据,简化配置,提高代码可读性。 6. AOP 配置:Spring 的 ...
在Spring框架中,`applicationContext.xml`是核心配置文件,它定义了应用的组件及其依赖关系。这个文件是Spring IoC(Inversion of Control,控制反转)容器的基础,负责管理和装配应用中的对象。下面我们将详细解析...
### Spring + Hibernate 详解与配置 #### Spring框架概述 Spring框架是一个开源的、轻量级的应用框架,旨在简化企业级应用开发。它提供了一个全面的编程模型,支持从Web到数据访问等各种应用需求。Spring的核心...
"Spring Boot 容器加载完成后执行特定操作" Spring Boot 框架提供了多种方式来执行容器加载完成后的特定操作,例如使用 ApplicationListener 接口或使用 @PostConstruct 注解。在本文中,我们将介绍使用 ...
三、Spring配置Quartz 1. 添加依赖 在你的项目中,你需要引入Spring对Quartz的支持。在Maven的pom.xml文件中添加以下依赖: ```xml <groupId>org.springframework <artifactId>spring-context-support 你的...
此外,Spring Boot简化了Spring应用的启动和配置,Spring Cloud则提供了微服务治理的解决方案。 总结,Spring框架通过其独特的设计理念和设计模式,实现了对象的解耦和管理,提高了代码的可测试性和可维护性。理解...
### Spring配置文件详解 #### 一、Spring框架与配置文件的重要性 Spring框架是Java平台上的一个开源框架,它提供了一种轻量级的方式来管理和组织Java应用程序中的组件。Spring框架的核心特性之一是依赖注入...
《Spring内核详解》 Spring框架作为Java领域最流行的轻量级应用框架,其核心机制是许多开发者关注的焦点。本文将深入剖析Spring内核,揭示其设计思想和实现原理,帮助开发者更好地理解和运用这一强大的工具。 一、...
以上就是ActiveMQ与Spring的集成配置方案,涵盖了连接工厂、JMS模板、监听容器以及消息监听器等关键元素。通过这样的配置,我们可以方便地在Spring应用中发送和接收消息,从而实现服务间的异步通信。在实际应用中,...
在这个“spring技术详解及使用指导”中,我们将深入探讨Spring框架的主要组成部分和应用场景。 首先,Spring框架的核心是IoC(Inversion of Control,控制反转)。IoC通过将对象的创建和管理权交给容器,使得开发者...
### Spring 容器后处理器详解 #### 一、Spring 容器后处理器概念及应用场景 在Spring框架中,容器后处理器(BeanFactoryPostProcessor)是一种非常实用的设计模式,主要用于在容器初始化完成后对容器进行额外的...
在阅读“spring框架技术详解及使用指导”时,你可能会学到如何配置Spring IoC容器,如何使用注解进行依赖注入,如何编写AOP切面,以及如何利用Spring MVC构建RESTful Web服务。此外,书中可能还会涵盖Spring Boot的...
这篇“spring框架,技术详解及使用指导”可能涵盖了Spring的多个方面,包括但不限于以下几个关键知识点: 1. **依赖注入(Dependency Injection,DI)**:这是Spring的核心特性,通过DI,对象之间的耦合度降低,...
### Spring配置文件详解 #### 一、Spring框架简介与配置文件的重要性 Spring 是一个开源的 Java 平台框架,提供了一种轻量级的应用程序开发方式。它通过依赖注入(Dependency Injection, DI)和面向切面编程...