@PostConstruct
作用
@PostConstruct是Java自己的注解.
@PostConstruct该注解被用来修饰一个非静态的void()方法.
@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次.
@PostConstruct在构造函数之后执行,init()方法之前执行.
如果我们知道servlet的生命周期,就能很好的理解!
特点
- 只有一个非静态方法可以使用此注解
- 被注解的方法不得有任何参数
- 被注解的方法返回值必须为void
- 被注解的方法不得抛出已检查异常
- 被注解的方法只会被执行一次
servlet的生命周期
1、Web Client 向Servlet容器(Tomcat)发出Http请求
2、Servlet容器接收Web Client的请求
3、Servlet容器创建一个HttpRequest对象,将Web Client请求的信息封装到这个对象中
4、Servlet容器创建一个HttpResponse对象
5、Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数传给 HttpServlet对象
6、HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息
7、HttpServlet调用HttpResponse对象的有关方法,生成响应数据
8、Servlet容器把HttpServlet的响应结果传给Web Client
@PostContruct的使用场景
在项目中,我们经常需要初始化一些属性值,可以在整个项目中进行使用。有同学就说了,我们可以使用static关键字。但是,由于类的初始化顺序问题,我们是无法拿到需要的数据的,因为它是null。使用@PostContruct注解之后,是在servlet加载过程中进行初始化的,因此,我们才能更好的使用。
import org.springframework.beans.factory.annotation.Autowired;
import javax.annotation.PostConstruct;
import java.util.List;
public class TestPostContruct {
public static List list;
@Autowired
BaseMapper baseMapper;
@PostConstruct
public void initData(){
list = getData();
}
public List getData(){
return baseMapper.getAll();
}
}
上一篇: @PostConstruct
下一篇: thinkphp是什么
推荐阅读
-
@PostConstruct
-
spring框架中@PostConstruct的实现原理
-
spring 初始化顺序 @PostConstruct
-
spring 初始化顺序 @PostConstruct
-
源码解析:init-method、@PostConstruct、afterPropertiesSet孰先孰后
-
@DS注解在 @PostConstruct 事件中失效的问题解决 javamybatisplusspringboot
-
@DS注解在 @PostConstruct 事件中失效的问题解决 javamybatisplusspringboot
-
源码解析:init-method、@PostConstruct、afterPropertiesSet孰先孰后
-
@PostConstruct和@PreConstruct注解
-
浅谈SpringBoot中的Bean初始化方法 @PostConstruct