- 浏览: 1064167 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (501)
- dwr (6)
- javascript (84)
- oracle (66)
- jsp/servlet (18)
- ant (3)
- 基础知识 (12)
- EXT (10)
- My SQL (10)
- java (71)
- spring (37)
- 学习的对象 (2)
- Linux (24)
- 面试 (1)
- HTML/CSS (11)
- tomcat (11)
- 收藏夹 (2)
- Power Designer (2)
- struts.xml配置文件 (1)
- sturts2 (3)
- myeclipse (8)
- eclipse (7)
- Maven (34)
- SVN (3)
- SAP JCO (2)
- JBOSS (11)
- webservice (8)
- word (1)
- 敏捷开发 (1)
- sybase (4)
- Nexus (3)
- EhCache (3)
- log4j (3)
- Cookie (4)
- Session (4)
- CXF (7)
- AXIS (2)
- SSO (1)
- LDAP (1)
- velocity (2)
- Jquery (5)
- redis (2)
- http (4)
- dojo (1)
- Linux资源监控软件mnon的安装与运用 (1)
- notepad++ (1)
- EA (1)
- UML (1)
- JasperReports (1)
- 权限 (0)
- freemarker (4)
- Spring MVC (1)
- JMS (1)
- activeMQ (1)
- hession (3)
- 安全 (1)
- ibatis (2)
- log (1)
- nginx (1)
最新评论
-
winhbb:
我刚好遇到了一个问题(在可以依赖注入的场合有效):有两个模块A ...
解决Maven项目相互依赖/循环依赖/双向依赖的问题 -
nanjiwubing123:
long3ok 写道你好 XmlOutputFormatter ...
用XStream转换复杂XML -
zhoujianboy:
另外一个方法实现eclipse tomcat 热部署:http ...
eclipse下实现maven项目在tomcat容器热部署方法 -
long3ok:
你好 XmlOutputFormatter 请问这个类是在什么 ...
用XStream转换复杂XML -
ganbo:
总结的好,文章给力。
解决Maven项目相互依赖/循环依赖/双向依赖的问题
在某些应用中,我们希望,当spring 容器将所有的bean都初始化完成后,做一个操作(例如:将数据库中的字典,加载到内存中),这时我们可以实现一个接口,如下:
同时实例化该bean:
但是这个时候,会存在一个问题,在web 项目中(spring mvc),系统会存在两个容器,一个是root application context ,另一个就是我们自己的 projectName-servlet context(作为root application context的子容器)。
这种情况下,就会造成onApplicationEvent方法被执行两次。为了避免上面提到的问题,我们可以只在root application context初始化完成后调用逻辑代码,其他的容器的初始化完成,则不做任何处理,修改后代码
如下:
后续发现加上以上判断还是能执行两次,不加的话三次,最终研究结果使用以下判断更加准确:event.getApplicationContext().getDisplayName().equals("Root WebApplicationContext")
【转载地址】http://blog.csdn.net/fatherican/article/details/9130165
后续发现加上以上判断还是能执行两次,不加的话三次,最终研究结果使用以下判断更加准确:event.getApplicationContext().getDisplayName().equals("Root WebApplicationContext")
package com.yk.test.executor.processor public class InstantiationTracingBeanPostProcessor implements ApplicationListener<ContextRefreshedEvent> { @Override public void onApplicationEvent(ContextRefreshedEvent event) { //需要执行的逻辑代码,当spring容器初始化完成后就会执行该方法。 } }
同时实例化该bean:
<!-- 当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初始化完成后调用逻辑代码,其他的容器的初始化完成,则不做任何处理,修改后代码
如下:
@Override public void onApplicationEvent(ContextRefreshedEvent event) { if(event.getApplicationContext().getParent() == null){//root application context 没有parent,他就是老大. //需要执行的逻辑代码,当spring容器初始化完成后就会执行该方法。 } }
后续发现加上以上判断还是能执行两次,不加的话三次,最终研究结果使用以下判断更加准确:event.getApplicationContext().getDisplayName().equals("Root WebApplicationContext")
【转载地址】http://blog.csdn.net/fatherican/article/details/9130165
后续发现加上以上判断还是能执行两次,不加的话三次,最终研究结果使用以下判断更加准确:event.getApplicationContext().getDisplayName().equals("Root WebApplicationContext")
发表评论
-
Spring MVC 3.1新特性 生产者、消费者请求限定
2015-06-15 07:42 715参考地址: http://www.iteye.com/to ... -
CSRF TOKEN
2015-02-14 18:02 1146package com.uncle5.pubrub.web.c ... -
Spring MVC Controller单例陷阱
2014-06-27 08:51 681Spring MVC Controller默认是 ... -
[Spring] Hessian权限认证,加密前面
2014-03-06 09:52 1614Hessian的一些基本简介已经在上一节已经全部介绍了,上一节 ... -
FieldRetrievingFactoryBean 和 MethodInvokingFactoryBean
2014-01-09 18:36 1020spring提供了filed的值注入和method的返回值注入 ... -
Spring中ApplicationContext的事件机制(二 内定事件)
2014-01-09 11:08 12342在Spring中已经定义了五个标准事件,分别介绍如下: 1) ... -
spring学习之springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序
2013-09-12 10:43 1214spring mvc处理方法支持如下的返回方式:ModelA ... -
JSR-303
2013-09-12 00:22 931JSR-303 是JAVA EE 6 中的一项子规范,叫做Be ... -
EHCACHE分布式缓存
2013-09-06 17:26 1314从1.2版本开始,Ehcache可 ... -
springMVC+freemarker整合
2013-09-06 16:39 1435springMVC整合大家都比较熟悉了吧主要有以下几个步骤: ... -
Spring MVC 学习笔记 Viewresol和View
2013-09-06 15:34 930Spring MVC使用ViewResolver来根据cont ... -
Spring的PropertyPlaceholderConfigurer应用
2013-09-06 15:04 3221Spring 利用PropertyPlaceholderCon ... -
SpringSecurity3_Logout
2013-08-22 16:07 2582Logout¶•退出登录的链接 <a href=&quo ... -
spring的default-lazy-init参数 .
2013-04-23 20:08 979spring在启动的时候,会默认加载会默认加载整个对象实例图, ... -
Spring MVC 如何防止XSS、SQL注入攻击
2013-04-16 15:40 1684在Web项目中,通常需要处理XSS,SQL注入攻击,解决这个问 ... -
Spring JMS
2013-01-08 10:48 985http://blog.csdn.net/shiqiang12 ... -
给spring jdbctemplate加上一层“绮丽外衣”-动态SQL&&SQL语句以文件存放
2013-01-07 16:00 3307给spring jdbctemplate加上一层“华丽外衣”- ... -
使用Spring的NamedParameterJdbcTemplate完成DAO操作 .
2013-01-07 14:54 1185NamedParameterJdbcTemplate内部包含了 ... -
cron表达式(quartz中时间表达式)
2012-12-20 15:54 1003http://sosuny.iteye.com/blog/46 ... -
spring 3中新增的@value注解
2012-11-26 22:31 3381在spring 3.0中,可以通过使用@value,对一些如x ...
相关推荐
System.out.println("spring容器初始化完毕================================================"); } } ``` 在上面的示例代码中,我们使用 @Component 注解将 BeanDefineConfigue 类注册为 Spring 容器中的一个 ...
当Spring容器检测到一个bean实现了这个接口,它会在所有依赖注入完成后调用这个方法。这是最基础的初始化回调方式。 2. **@PostConstruct 注解**: 另一种方式是使用`@PostConstruct`注解。将这个注解添加到一个非...
- **初始化处理**:执行bean定义中的初始化方法,完成对象的初始化设置。 - **销毁处理**:在容器关闭时,调用bean的销毁方法,清理资源。 3. **Bean的定义与管理** - **XML配置**:传统上,我们使用XML文件定义...
- **`BeanFactoryPostProcessor`**:在Spring IoC容器初始化过程中执行,可以修改bean定义。 ##### 2. `FactoryBean` - **定义**:特殊的bean类型,通过`getObject()`方法返回其管理的实际对象。 - **使用场景**:...
传统的Java程序中,开发者通常需要手动创建对象,而在Spring中,我们声明对象的配置,然后由Spring容器负责对象的创建、初始化、依赖注入等工作。这使得代码更加松耦合,易于测试和维护。 2. **Spring DI的理解**:...
- 对于单例Bean,Spring容器在启动时就会创建其实例,并执行初始化方法。而对于原型Bean,则是在每次获取时都会创建一个新的实例。理解Bean的生命周期对于正确配置Bean的初始化和销毁逻辑非常重要。
- **1.6.1 生命周期回调**: Spring支持在Bean的生命周期中执行自定义的方法,包括初始化和销毁方法。 - **初始化回调**: 通过`InitializingBean`接口或者在Bean定义中指定`init-method`属性来定义初始化方法。 - *...
当Spring的IoC容器启动并加载Bean定义后,它并不会立即执行依赖注入,而是等到用户首次通过`getBean()`方法请求某个Bean时,或者在配置中指定了`lazy-init=false`属性,使得容器在解析注册Bean定义时进行预实例化,...
4. **初始化回调**:bean创建并注入依赖后,如果定义了初始化方法(如`init-method`),Spring会调用这个方法,允许bean执行任何必要的初始化操作。 5. **销毁回调**:当容器关闭时,如果bean定义了销毁方法(`...
可以通过XML配置文件或注解来定义和配置bean,包括其属性、初始化方法和销毁方法。 5. **数据访问集成**:Spring提供了对各种数据访问技术的支持,如JDBC、Hibernate、JPA等,简化了数据库操作。 6. **MVC框架**:...
2. **配置Spring监听器**:在`web.xml`文件中,需要配置一个Spring的上下文监听器`ContextLoaderListener`,该监听器负责初始化Spring的ApplicationContext。具体配置如下所示: ```xml <listener-class>org....
6. `@PostConstruct` 和 `@PreDestroy`: 这两个注解分别标记在方法上,表示在bean初始化完成后和销毁前执行的方法,提供了对bean生命周期的精细控制。 7. `@RequestMapping`, `@GetMapping`, `@PostMapping`, `@...
5. **预初始化单例bean**:在容器完全初始化之前,预创建所有的单例bean,但不执行任何依赖注入。 6. **初始化消息源**:处理国际化信息,如果配置了`MessageSource`。 7. **完成bean的实例化和依赖注入**:这一步...
在Java开发中,Spring框架是应用最广泛的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)容器。它的核心特性之一就是包扫描,能够自动发现并管理应用程序中的bean。本文将深入探讨如何模拟Spring...
30. Spring容器启动时,为什么先加载BeanFactoryPostProcess图灵课堂?:因为BeanFactoryPostProcessor需要在BeanDefinition注册完后执行。 31. Bean的创建顺序是什么样的?:按照依赖关系和优先级来创建Bean。 …...
在Spring容器初始化时,它会扫描@Service注解,然后识别@EnableAspectJAutoProxy注解,并解析其中的@Import注解。之后,Spring将EnableAspectJAutoProxy和AspectJAutoProxyRegistrar注册为BeanDefinition,并通过...
Spring实现的事务本质就是AOP完成,对方法前后进行拦截,在执行方法之前开启事务,在执行完目标方法之后根据执行情况提交或者回滚事务。 事务失效的场景 在项目中,经常会遇到事务失效的场景。例如,如果方法上...
- 最终通过 `AbstractSecurityWebApplicationInitializer` 完成 `FilterChainProxy` 的初始化并将其注册到 Servlet 容器中。 #### 三、HTTP 标签解析 1. **作用**:`<http>` 标签是 Spring Security XML 配置的...
- **Bean的生命周期管理**:Spring容器负责管理Bean的整个生命周期,包括初始化、销毁等阶段。 ### Spring与MyBatis集成 Spring与MyBatis的集成使得开发者能够在Spring框架中方便地使用MyBatis持久层框架进行...