BeanFactory和ApplicationContext学习
来源:互联网 发布:知乎专栏怎么写文章 编辑:程序博客网 时间:2024/05/01 01:16
BeanFactory
功能:负责根据配置文件创建bean实例,可以配置的项目有:
1. Bean属性值及依赖关系(对其他bean的引用)。
2. Bean创建模式(是否Singleton模式,即是否只针对指定类维持全局唯一的实例)。
3. Bean初始化和销毁方法。
4. Bean的依赖关系。
l ID: Java Bean在BeanFactory中的唯一标识。代码中通过BeanFactory获取JavaBean实例时需以此作为索引标识。
l CLASS JavaBean类名
l Singleton 指定此JavaBean是否采用单例模式,如果为true,则在此BeanFactory范围内,只维护此JavaBean的一个实例。代码通过BeanFactory获取此实例的引用。如为false,则通过BeanFactory获取JavaBean实例时,BeanFactory每次都创建JavaBean的一个新的实例返回
l Init-method 初始化方法,此方法在BeanFactory创建JavaBean实例之后,在向应用层返回引用之前执行。一般用于一些资源的初始化工作
l Destory-method 销毁方法,此方法在JavaBean销毁时执行,一般用于释放资源
l Depends-on Bean依赖关系,一般情况下无需设定
l <Value> 通过<value />节点可指定属性值。BeanFactory可以自动根据JavaBean对应的属性类型加以匹配。<value></value>表示设定一个空字符串。如果需要设定NULL,必须使用<NULL/>节点。
l <ref> 指定了属性中对BeanFactory中其他Bean的引用关系。在<ref>中,有<local>和<bean>的引用方式,<local>表示在当前配置文件中搜索引用的Bean,<bean>表示在全局范围进行搜索。
Spring中的事件传播
ApplicationContext给予Observer模式,提供了针对Bean的事件传播功能。通过ApplicationContext.publishEvent方法,我们可以将事件通知系统内所有的ApplicationListener。
下面提供一个简单的例子程序,关于登陆。
LoginAction.java
public class LoginAction implements ApplicationContextAware {
private ApplicationContext applicationContext;
public void setApplicationContext(ApplicationContext arg0)
throws BeansException {
// TODO Auto-generated method stub
this.applicationContext = arg0;
}
public int login(String username,String password){
ActionEvent actionEvent = new ActionEvent(username);
this.applicationContext.publishEvent(actionEvent);
return 0;
}
}
上述类实现了ApplicationContextAware接口,通过此接口,获取ApplicationContext实例。
自定义事件类型ActionEvent,继承自ApplicationEvent类。代码如下:
ActionEvent.java
public ActionEvent(Object source){
super(source);
}
在login方法中,调用了ApplicationContext.publishEvent方法,此方法可以将ApplicationEvent类型的事件传播开来,系统内所有ApplicationListener都能得到这个Event。
下面给处ActionListener类,此类实现了ApplicationListener接口。
public void onApplicationEvent(ApplicationEvent event) {
if(event instanceof ActionEvent){
System.out.print(event.toString());
}
}
applicationContext.xml文件中配置如下:
<bean id="loginAction" class="web.spring.demo.LoginAction"></bean>
<bean id="listener" class="web.spring.demo.ActionListener"></bean>
测试类如下:
public static void main(String[] args) {
ApplicationContext cxt = new ClassPathXmlApplicationContext("applicationContext.xml");
LoginAction action = (LoginAction)cxt.getBean("loginAction");
action.login("prince", "mimamima");
}
结果如下:web.spring.demo.ActionEvent[source=prince]
在运行期间,ApplicationContext会自动在当前的所有bean中搜索ApplicationListener接口的实现,并将其作为事件接对象。当ApplicationContext.publishEvent方法调用时,所有ApplicationListener接口都会被激发,每个ApplicationListener可以根据事件的类型判断是否是自己要处理的事件,如上面的ActionListener只处理ActionEvent。
- BeanFactory和ApplicationContext学习
- Spring学习-04:BeanFactory和ApplicationContext
- Spring学习(三):BeanFactory和ApplicationContext
- BeanFactory与ApplicationContext学习
- Spring--BeanFactory和ApplicationContext
- BeanFactory和ApplicationContext
- ApplicationContext和BeanFactory
- Beans, BeanFactory和ApplicationContext
- BeanFactory和ApplicationContext区别
- BeanFactory和ApplicationContext
- 2.2 BeanFactory和ApplicationContext
- BeanFactory 和ApplicationContext
- BeanFactory 和ApplicationContext区别
- BeanFactory和ApplicationContext 区别
- BeanFactory和ApplicationContext
- Spring--BeanFactory和ApplicationContext
- beanfactory 和 applicationContext
- Spring学习之IOC容器BeanFactory和ApplicationContext(三)
- 要开始做事了
- SqlDependency 的数据库配置步骤
- ORACLE用户管理
- PL/SQL高级应用的学习1
- Spring事务学习
- BeanFactory和ApplicationContext学习
- Hibernate笔记2--映射对象之间的关系
- 原创:自己写代码实现遥感影像自动配准
- PHP串行化与JSON
- 开源GIS系统现状分析
- clistctrl单行多行选中问题
- asp.net电子商务开发实战 视频 适合初学者。
- 不能因为它是WOW就不叫传销
- asp.net电子商务开发实战 视频 第一讲