在项目中遇到一个需求。需要用到自定的类,没有@Resource等注解。但是需要web容器启动的时候,执行该类中的方法。笔者自己打了个spring+springMVC的架子后测试以及在项目中测试成功。 具体实现如下:
- 自定义的类实现InitializingBean
import org.springframework.beans.factory.InitializingBean;
public class AutoStart implements InitializingBean{
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("--------------自启动---------------");
System.out.println("-- ---");
System.out.println("-- ---");
System.out.println("-- ---");
System.out.println("-- ---");
System.out.println("--------------自启动---------------");
}
public void init() {
System.out.println("发布项目的时候执行了本方法");
}
}
- 在xml中定义该类,并且指定执行的方法
<!-- init-method="init" 表示执行该类中的 init方法 -->
<bean id="myAuto" class="com.demo.AutoStart" scope="singleton" init-method="init"></bean>
- 效果
- 停止tomcat服务的时候执行自定义方法
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
@Component
public class ExitSaveCouner implements DisposableBean {
@Override
public void destroy() throws Exception {
System.out.println("啊啊啊啊啊 我被销毁了!!!");
CouterPropertiesUtil.saveConter();
}
}
- 在xml中配置该任务
<bean id="exitSaveCouner" class="com.demo.util.ExitSaveCouner" scope="singleton" destroy-method="destory">
</bean>