关于Spring中初始化一个静态变量(需要调用Service层然后从数据库查出来的)

想要在项目启动时初始化一些静态变量(从数据库里查出来的)

首先想到了使用 static{ } 静态代码块, 但是静态代码块的执行顺序在 @Autowired注入的Service层之前。

也就是说要在静态代码块中 访问数据库, 但是 执行静态代码块中的代码时, @Autowired还没有注入进来, 会报NullPoint。

网上搜了一些解决办法, 以下办法可以解决, 其他的暂时没有试验:

        private static List resourceList = null; //初始化的全局静态变量

	@Autowired
	private ResourceService resourceServiceTemp;

	private static ResourceService resourceService;
		
        //字面上看, 这个注解的意思是在构造方法之后执行(还有个PreConstruct方法)
	@PostConstruct
	public void init() { //程序启动后会自动执行该方法
	    resourceService = resourceServiceTemp; //将注入的对象重新赋值给静态对象
            resourceList = resourceService.findAll(); //在这里就可以调用Service的方法了
        }


你可能感兴趣的:(框架知识,Java)