古剑特效重制版和原版与原版有啥区别,哪个好

Spring学习笔记 关于Bean的初始化和清理-init和destroy方法
如果需要在Bean被创建以及销毁时执行特定的初始化与清理操作在Spring中有两种选择。
1.在XML中定义bean的init-method与destroy-method属性
&& 执行init与destroy方法非强制,在xml中自由配置,与Spring框架依赖度低
2.使Bean实现初始化与销毁操作接口InitializingBean与DisposableBean,如:
public class Message& implements InitializingBean , DisposableBean&&
&& 实现相应接口,可以强制执行初始化或销毁方法,但是会增加代码与Spring框架的依赖性。
另外需要注意只有当bean的scope属性为singleton时,也就是以单例模式创建bean,bean的销毁才由SpringContainer管理,才会执行destroy方法。
XML配置示例
spring-config.xml //如果以下配置中对bean :messageLooper 定义增加scope=&prototype& 即不使用单例模式创建bean,destroy方法不会被执行。
&?xml version=&1.0& encoding=&UTF-8&?&&
&beans xmlns=&&&
&&& xmlns:xsi=&&&
&&& xsi:schemaLocation=&&&
&&&&&&& &&&
&&& &bean id=&messageLooper& class=&initanddestroy.MessageLooper& init-method=&init& destroy-method=&destroy& /&&
messageLooper.java // 带有init与destroy方法的类
public class MessageLooper&&
&&& //销毁方法&
&&& public void destroy()&&
&&&&&&& System.out.println(&destroy executed&);&
&&& //初始化方法&
&&& public void init()&&
&&&&&&& System.out.println(&init executed&);&&&&&&&
main方法类:
InitAndDestroyMain.java
import org.springframework.context.ApplicationC&
import org.springframework.context.support.ClassPathXmlApplicationC&
import initanddestroy.MessageL&
public class InitAndDestroyMain&
&&&& * @comment [注释说明]
&&&& * @author& 荣磊,
&&&& * @param args
&&& public static void main(String[] args)&
&&&&&&& String configString = &initanddestroy/spring-config.xml&;&
&&&&&&& ApplicationContext context = new ClassPathXmlApplicationContext(configString);&
&&&&&&& MessageLooper messageLooper = context.getBean(&messageLooper&, MessageLooper.class);&
&&&&&&& //关闭context来触发执行bean销毁方法&
&&&&&&& ((ClassPathXmlApplicationContext) context).close();&&
InitializingBean与DisposableBean接口配置示例
spring-config.xml // 同样如果messageLooper在bean定时时定义了scope=&&的值且不为singleton的话destroy方法不会被执行。
&?xml version=&1.0& encoding=&UTF-8&?&&
&beans xmlns=&http://www.springframework.org/schema/beans&&
&&& xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&&
&&& xsi:schemaLocation=&http://www.springframework.org/schema/beans&&
&&&&&&& http://www.springframework.org/schema/beans/spring-beans-3.0.xsd&&&
&&& &bean id=&messageLooper& class=&initanddestroy.MessageLooper&& /&&&
MessageLooper.java& 代码:
import org.springframework.beans.factory.DisposableB&
import org.springframework.beans.factory.InitializingB&
public class MessageLooper& implements InitializingBean , DisposableBean&&
&&& @Override&
&&& public void destroy() throws Exception&
&&&&&&& System.out.println(&destroy executed&);&
&&& @Override&
&&& public void afterPropertiesSet() throws Exception&
&&&&&&& System.out.println(&init executed&);&&&
main方法类: //实际上这个main方法类跟上边xml示例中的代码是相同的
import org.springframework.context.ApplicationC&
import org.springframework.context.support.ClassPathXmlApplicationC&
import initanddestroy.MessageL&
public class InitAndDestroyMain&
&&&& * @comment [注释说明]
&&&& * @author& 荣磊,
&&&& * @param args
&&& public static void main(String[] args)&
&&&&&&& String configString = &initanddestroy/spring-config.xml&;&
&&&&&&& ApplicationContext context = new ClassPathXmlApplicationContext(configString);&
&&&&&&& MessageLooper messageLooper = context.getBean(&messageLooper&, MessageLooper.class);&
&&&&&&& //关闭context来触发执行bean销毁方法&
&&&&&&& ((ClassPathXmlApplicationContext) context).close();&&
作者:arvinrong在做web项目开发中,尤其是企业级应用开发的时候,往往会在工程启动的时候做许多的前置检查。
比如检查是否使用了我们组禁止使用的Mysql的group_concat函数,如果使用了项目就不能启动,并指出哪个文件的xml文件使用了这个函数。
而在Spring的web项目中,我们可以介入Spring的启动过程。我们希望在Spring容器将所有的Bean都初始化完成之后,做一些操作,这个时候我们就可以实现一个接口:
package com.yk.test.executor.processor
public class InstantiationTracingBeanPostProcessor implements ApplicationListener&ContextRefreshedEvent& {
public void onApplicationEvent(ContextRefreshedEvent event) {
//需要执行的逻辑代码,当spring容器初始化完成后就会执行该方法。
同时在Spring的配置文件中,添加注入:
当Spring容器启动完成后执行下面的这个Bean --&
&bean class=&com.yk.test.executor.processor.InstantiationTracingBeanPostProcessor&/&
但是这个时候,会存在一个问题,在web 项目中(spring mvc),系统会存在两个容器,一个是root application context ,另一个就是我们自己的 projectName-servlet
context(作为root application context的子容器)。
这种情况下,就会造成onApplicationEvent方法被执行两次。为了避免上面提到的问题,我们可以只在root application context初始化完成后调用逻辑代码,其他的容器的初始化完成,则不做任何处理,修改后代码
public void onApplicationEvent(ContextRefreshedEvent event) {
if(event.getApplicationContext().getParent() == null){//root application context 没有parent,他就是老大.
//需要执行的逻辑代码,当spring容器初始化完成后就会执行该方法。
相关 [spring 初始 方法] 推荐:
- 企业架构 - ITeye博客
/rollenholt/p/3612440.html. 在做web项目开发中,尤其是企业级应用开发的时候,往往会在工程启动的时候做许多的前置检查. 比如检查是否使用了我们组禁止使用的Mysql的group_concat函数,如果使用了项目就不能启动,并指出哪个文件的xml文件使用了这个函数.
- 企业架构 - ITeye博客
在Spring的使用中,有时初始化一些公共类,比如数据源、常量配置等,这些方法会执行两次,导致程序执行出现异常. 一个解决方法是利用Spring的事件机制,事件机制需要实现ApplicationListener监听器,只要编写一个实现类实现该接口的onApplicationEvent方法,在方法体中初始化应用需要的初始化数据,并做防二次初始化的处理.
- 企业架构 - ITeye博客
1、采用数据映射器(MapperFactoryBean)的方式,不用写mybatis映射文件,采用注解方式提供相应的sql语句和输入参数.
(1)Spring配置文件:.
&!-- 引入jdbc配置文件 --&.
&!--创建jdbc数据源 --&.
- 行业应用 - ITeye博客
字面意思很明显,产生的格式跟能接受的格式不符,对不上眼. 但是各种google、stackoverflow之后,大多数答案都只是说要加上json的相关依赖之类的,试了都无用. 而另一个HeaderContentNegotiationStrategy根本没发挥作用.
在spring-servelt中添加.
- 开源软件 - ITeye博客
控制器的请求处理方法的签名可以将任何事物作为参数,我们可以将HttpServletRequest、HttpServletResponse、 String或者数字参数传递进来,这些参数可以对应请求中的查询参数、cookie值、HTTP请求头的值或其他一些可能的选项. 使用@RequestParam绑定请求参数值.
- 行业应用 - ITeye博客
WebService客户端调用的本质就是将SAOP格式的XML通过通信协议发送到WebService的服务器端,然后接收服务器端返回的XML.. 本文简单介绍一下如何通过Spring提供的WebServiceTemplate访问 Webservice,WebServiceTemplate与调用webservice的客户端已及webservice服务器端示意图如下(图片来源 于Spring in Action):.
- ITeye博客
1.默认location
默认会去加载WEB-INF下的applicationContext.xml文件,如果该文件不存在,则会抛出以下的异常. web.xml中通过servlet name自定义. 通过以下的定义,会去加载WEB-INF下面的test-servlet.xml作为spring的配置文件.
- CSDN博客综合推荐文章
直接用jdk api的Timer类,无需配置spring文件. 1、用@compent注解,实现InitializingBean接口 ,spirng会自动去查找afterPropertiesSet()方法,. 2、在afterPropertiesSet方法中写业务实现,调用timer的schedule方法或者.
- 企业架构 - ITeye博客
/developerworks/cn/java/j-lo-springaopfilter/index.html. 使用 Annotation 可以非常方便的根据用户的不同角色,分配访问 Java 方法的权限. 在 Java Web 开发中,使用这种方法,可以提高系统的松耦合度,方便维护.
- 企业架构 - ITeye博客
对于大多数典型的 Spring/Hibernate 企业应用而言,其性能表现几乎完全依赖于持久层的性能. 此篇文章中将介绍如何确认应用是否受数据库约束,同时介绍七种常用的提高应用性能的速成法. 如何确认应用是否受限于数据库. 确认应用是否受限于数据库的第一步,是在开发环境中进行测试,并使用 VisualVM 进行监控.
坚持分享优质有趣的原创文章,并保留作者信息和版权声明,任何问题请联系:@。Spring context 初始化后bean init的场景 - elicer - ITeye博客
博客分类:
本人最近遇到一个难题,我们在对spring webflow做了扩展后, 需要在spring context初始化完成后对我们自己的bean做一些init的初始化操作实现方法。
实现思路, 我们想借助于spring context的自己的listener的生命周期方法ContextRefreshedEvent。这个event会在spring context初始化完成之后调用。我们可以在这个方法里调用我们自己的bean的init方法。
实现细节:
自定义一个公共接口 Initilization,所有想要在spring context初始化后被调用的bean都要实现这个接口:
public interface Initilization{
//需要在spring context初始化后调用的方法
public void init();
自定义实现spring context 的 ApplicationListener
import java.util.L
import org.springframework.beans.factory.annotation.A
import org.springframework.context.ApplicationE
import org.springframework.context.ApplicationL
import org.springframework.context.event.ContextRefreshedE
@SuppressWarnings("rawtypes")
public class PostContextInitilization implements ApplicationListener {
@Autowired(required=false)
List&Initilization&
public List&Initilization& getList() {
public void setList(List&Initilization& list) {
this.list =
public void onApplicationEvent(ApplicationEvent event) {
// TODO Auto-generated method stub
if(list == null){
if(event instanceof ContextRefreshedEvent){
for(Initilization initBean:list){
initBean.initAfterContextSetup();
这样就可以实现spring context初始化后的处理逻辑的实现
浏览: 89292 次
来自: 上海
不用单独加载指定的文件private static Confi ...
spring mvc demo教程源代码下载,地址:http: ...
zhongrf 写道请问为何用backbone?对银行系统合适 ...
请问为何用backbone?对银行系统合适么?
动态加载bean已经了解。我现在有这样一个需求 ...

我要回帖

更多关于 古剑特效重制版和原版 的文章

 

随机推荐