第一种方式:
1.定义一个初始化加载方法类,并实现InitializingBean接口
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
@Component
@Lazy(false)
public class AutoLoad implements InitializingBean {
@Autowired
private StudentIniti studentIniti;
@Override
public void afterPropertiesSet(){
studentIniti.init();
}
}
2.封装类StudentIniti,在该类中实现想要的数据,我在此处实现了一个学生类树形结构图
import cnki.jiangxi.entity.Student;
import cnki.jiangxi.module.search.bll.IIndicatorInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
* User: mozixi
* Date: 14:21 2020/9/15
* Description: 项目启动加载数据
* Version 1.0
*/
@Component
public class StudentIniti {
public static List<Student> resultList = new ArrayList<>();
@Autowired
private StudentService studentService;
public void init(){
List<Student> list = studentService.getAlldata();
resultList = getStudentTree(list);
}
private List<Student> getStudentTree( List<Student> list ) {
List<Student> result = new ArrayList<>();
//1.获取根节点数据
for(Student Student:list){
if(Student.getLevel() == 1){
result.add(Student);
}
}
// 3.递归获取子节点
for (Student parent : result) {
getChildrenTree(parent, list);
}
return result;
}
private void getChildrenTree( Student parent, List<Student> list ) {
List<Student> lst = new ArrayList<>();
for (Student Student : list) {
if(parent.getSysCode().equals(Student.getParentID())) {
lst.add(Student);
parent.setChildren(lst);
getChildrenTree(Student, list);
}
}
}
}
3.项目启动成功之后,树形结构就放入了resultList中,在项目中便可以当做工具类一样引用加载好的数据
第二种方式:直接在需要执行的方法上面添加注解@PostConstruct