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

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

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

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

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

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

	@Autowired
	private ResourceService resourceServiceTemp;

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


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值