在实际项目中,很多时候会有这样的需求,在项目启动时加载数据库中公共配置数据到内存,这个过程只执行一次,之后都从内存中读取配置,在传统的 ssm 框架中,使用静态块完成这一操作,在 springboot 框架中如何加载?请看下文
在 springboot 框架中非常简单,只需要一个 @PostConstruct 注解即可,代码如下
package com.wt.tmp;
import com.wt.bean.Userinfo;
import com.wt.dao.UserinfoDao;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
@Slf4j
@Service
public class AllocationIp {
private static CopyOnWriteArrayList<Account> accounts = new CopyOnWriteArrayList<Account>();
@Autowired
private UserinfoDao userinfoDao;
@PostConstruct
public void init(){
log.info("项目启动中,加载用户数据");
List<Userinfo> list = userinfoDao.findAll();
list.forEach(v -> {
Account account = new Account();
account.setName(v.getId());
account.setFlag(false);
accounts.add(account);
});
log.info("项目启动中,加载用户数据完成");
}
}