@PostConstruct和@PreDestroy注解
这⾥写⽬录标题
JavaEE5引⼊了@PostConstruct和@ProDestory两个作⽤于Servlet⽣命周期的注解,实现Bean初始化之前和销毁之前的⾃定义操作。
@PostConstruct
应⽤PostConstruct注释的⽅法必须遵守以下所有标准:
只有⼀个⽅法可以使⽤此注释进⾏注解;
被注解⽅法需是⾮静态⽅法;
被注解⽅法返回值为void;
被注解⽅法不得有任何参数;
被注解⽅法不得抛出已检查异常;
此⽅法只会被执⾏⼀次;
使⽤@PostConstruct写法有两种⽅式:
@PostConstruct
publicvoidtProperties(){
....
}
public@PostConstructvoidtProperties(){
....
}
被@PostConstruct修饰的⽅法会在服务器加载Servlet的时候运⾏,并且只会被服务器执⾏⼀次。@PostConstruct在构造函数之后执
⾏,init()⽅法之前执⾏,@ProDestroy⽅法在destory⽅法执⾏之后执⾏,在Servlet被彻底卸载之前。执⾏顺序流程如下:
服务器加载ServletServlet构造函数PostConstruct注解标识⽅法init⽅法Servicedestroy销毁⽅法ProDestroy注解标识⽅法Servlet卸载
另外,spring中Constructor、DI(依赖注⼊)、@PostConstruct的顺序:
根据依赖注⼊的业务逻辑,如果要将对象A注⼊到对象B中,那么就必须先⽣成对象A和对象B,执⾏Constructor。所以如果⼀个类B中
有个对象属性需要被注⼊,那么依赖注⼊是发⽣在B的构造函数执⾏之后的。如果想在⽣成对象时完成⼀些初始化操作,并且这些初始化操
作⼜依赖于DI(依赖注⼊),那么就需要通过@PostConstruct注解⼀个⽆参⽅法来完成该操作,@PostConstruct注解的⽅法将会在DI完成
后背⾃动调⽤。执⾏顺序如下:
ConstructorDI-依赖注⼊PostConstruct注解标识⽅法
;
ent;
nstruct;
s;
/**
*redis配置⽂件类
*/
@Component
publicclassRedisProperties{
//集群节点ip:port(多个以逗号隔开)
publicstaticStringhostPorts;
//密码
publicstaticStringpassword;
//最⼤连接数
publicstaticIntegermaxTotal;
//最⼤空闲连接数
publicstaticIntegermaxIdle;
//最⼩空闲连接数
publicstaticIntegerminIdle;
//最⼤等待时间
publicstaticIntegermaxWaitMillis;
//集群节点ip:port(多个以逗号隔开)
@Value("${-ports}")
privateStringhost_ports;
//密码
@Value("${rd}")
privateStringpwd;
//最⼤连接数
@Value("${-total}")
privateIntegermax_total;
//最⼤空闲连接数
@Value("${-idle}")
privateIntegermax_idle;
//最⼩空闲连接数
@Value("${-idle}")
privateIntegermin_idle;
//最⼤等待时间
@Value("${-wait-millis}")
privateIntegermax_wait_millis;
@PostConstruct
publicvoidtProperties(){
hostPorts=_ports;
password=;
maxTotal=_total;
maxIdle=_idle;
minIdle=_idle;
maxWaitMillis=_wait_millis;
}
}
上⾯代码执⾏顺序为:先执⾏RedisProperties类的⽆参构造⽅法,然后执⾏@Value注解进⾏参数注⼊,最后执⾏@PostConstrust
标注的⽅法tProperties()进⾏类属性赋值。
@PreDestroy
被@PreDestroy修饰的⽅法会在服务器卸载Servlet的时候运⾏,并且只会被服务器调⽤⼀次,类似于Servlet的destroy()⽅法。被
@PreDestroy修饰的⽅法会在destroy()⽅法之后运⾏,在Servlet被彻底卸载之前。
本文发布于:2022-12-08 21:57:24,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/68553.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |