欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

@PostConstruct

程序员文章站 2022-03-03 12:41:42
...

作用

@PostConstruct是Java自己的注解.
@PostConstruct该注解被用来修饰一个非静态的void()方法.
@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次.
@PostConstruct在构造函数之后执行,init()方法之前执行.

如果我们知道servlet的生命周期,就能很好的理解!

特点

  1. 只有一个非静态方法可以使用此注解
  2. 被注解的方法不得有任何参数
  3. 被注解的方法返回值必须为void
  4. 被注解的方法不得抛出已检查异常
  5. 被注解的方法只会被执行一次

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是什么