Spring启动后,立即执行需要的操作
2017-06-10 15:21
260 查看
Spring 配置文件:
Java代码
<bean id="deblocking" class="com.util.Deblocking" ></bean>
java代码:
Java代码
import javax.annotation.Resource;
import org.springframework.beans.factory.InitializingBean;
import com.config.service.HnbService;
import com.user.service.UserService;
public class Deblocking implements InitializingBean
{
@Resource(name = "hnService")
private HnbService hnbservice;
@Resource(name = "useService")
private UserService userService;
public void afterPropertiesSet()
{
hnbservice.updateHnbLock();
userService.updateUserLock();
}
}
实现这个接口后需要实现afterPropertiesSet()工程启动后就直接运行此方法。另外还可以在需要进行操作的bean的xml定义中加上init-method属性,指定下启动时运行哪个方法。
init-method是通过反射执行的,而afterPropertiesSet是直接执行的。所以 afterPropertiesSet的执行效率比init-method要高,不过init-method消除了bean对Spring依赖。在实际使用时我推荐使用init-method。
需要注意的是Spring总是先处理bean定义的InitializingBean,然后才处理init-method。如果在Spirng处理InitializingBean时出错,那么Spring将直接抛出异常,不会再继续处理init-method。
如果一个bean被定义为非单例的,那么afterPropertiesSet和init-method在bean的每一个实例被创建时都会执行。单例 bean的afterPropertiesSet和init-method只在bean第一次被实例时调用一次。大多数情况下 afterPropertiesSet和init-method都应用在单例的bean上。
Java代码
<bean id="deblocking" class="com.util.Deblocking" ></bean>
java代码:
Java代码
import javax.annotation.Resource;
import org.springframework.beans.factory.InitializingBean;
import com.config.service.HnbService;
import com.user.service.UserService;
public class Deblocking implements InitializingBean
{
@Resource(name = "hnService")
private HnbService hnbservice;
@Resource(name = "useService")
private UserService userService;
public void afterPropertiesSet()
{
hnbservice.updateHnbLock();
userService.updateUserLock();
}
}
实现这个接口后需要实现afterPropertiesSet()工程启动后就直接运行此方法。另外还可以在需要进行操作的bean的xml定义中加上init-method属性,指定下启动时运行哪个方法。
init-method是通过反射执行的,而afterPropertiesSet是直接执行的。所以 afterPropertiesSet的执行效率比init-method要高,不过init-method消除了bean对Spring依赖。在实际使用时我推荐使用init-method。
需要注意的是Spring总是先处理bean定义的InitializingBean,然后才处理init-method。如果在Spirng处理InitializingBean时出错,那么Spring将直接抛出异常,不会再继续处理init-method。
如果一个bean被定义为非单例的,那么afterPropertiesSet和init-method在bean的每一个实例被创建时都会执行。单例 bean的afterPropertiesSet和init-method只在bean第一次被实例时调用一次。大多数情况下 afterPropertiesSet和init-method都应用在单例的bean上。
相关文章推荐
- Spring-Spring容器启动各项操作窥探(AbstractApplicationContext#refesh()执行逻辑分析)
- 在tomcat启动时执行一些任务,用到了spring 和hibernate可以操作数据库
- spring 启动后执行自我操作(如加入数据进入缓存) 基于注解
- spring启动后立即执行指定的函数
- Spring,启动程序后顺序执行指定操作
- 注册表修改之后,是不会生效的,需要重启,或者执行如下操作(但是有些按这样操作也还是不能立即生效,最保险的方式还是通过重启电脑来实现)
- Spring Boot 启动时执行加载资源/执行操作
- Spring,启动程序后顺序执行指定操作
- spring boot, 容器启动后执行某操作
- spring 2.5 jpetstore启动需要的jar包一览
- Garbage Collection 一直在执行? 还是需要时才启动?
- 当 SQLServerAgent 正在启动时,无法执行此操作。请稍候再试[网络收集]
- 尚未初始化全文爬网管理器。爬网管理器完全初始化之前启动的所有爬网操作都需要重新启动。
- Garbage Collection 一直在执行? 还是需要时才启动?
- Spring启动后执行
- 无法执行该操作,因为链接服务器 "xxxxx" 的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务
- Spring容器启动后自动执行Servlet进行预处理
- WIndows 7 拷贝XP的共享文件夹时,出现"您需要权限来执行此操作" 的提示
- vista执行ASPNET_REGIIS -I 时提示请求的操作需要提升,安装失败解决办法
- 该操作未能执行,因为 OLE DB 提供程序SQLOLEDB无法启动分布式事务