@PostConstruct的使用
有时候,在项目启动的时候需要一些准备工作,我们就可以用到@PostConstruct这个注解:
@Component
public class DataDictionaryMap {
@Autowired
private DataDictionaryService dataDictionaryService;
@Autowired
private RedisTemplate<String, Object> redisTemplate;
private static DataDictionaryMap dataDictionaryMap;
/**
* 从数据库中取值放入到Redis中(存储字典)
*/
@PostConstruct
public void initDic() {
dataDictionaryMap = this;
dataDictionaryMap.redisTemplate = this.redisTemplate;
dataDictionaryMap.dataDictionaryService = this.dataDictionaryService;
refresh();
}
public static void refresh() {
// To Do......
}
}
如果需要在别的类里引用,就可以如下获取:
public class DataDictionaryController {
//第一种:注入
@Autowired
private DataDictionaryMap dataDictionaryMap;
dataDictionaryMap.refresh();
//第二种
DataDictionaryMap.refresh();//此时的refresh必须为static方法
}
公共类Util的注入使用
还有一些公共类我们需要进行一些Util的初始化,可以有以下两种方式:
一:直接注入使用@Autowired
public class UtilController {
@Autowired
private TestUtil testUtil;
@RequestMapping("test")
public Result test(String s) {
testUtil.test();
return new Result().setSuccess("");
}
}
/**
*
* @Autowired
* private TestUtil testUtil;
*
* testUtil.test();
*
*/
@Component
public class TestUtil {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@Autowired
private UserService userService;
public void test() {
redisTemplate.opsForValue().set("test", "test");
User u =userService.getOne(1L);
System.out.println("@Autowired private TestUtil testUtil");
}
}
二:提前注入@PostConstruct
public class UtilController {
@RequestMapping("test")
public Result test(String s) {
TestUtil1.test();
return new Result().setSuccess("");
}
}
/**
*
* TestUtil1.test();
*
*/
@Component
public class TestUtil1 {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@Autowired
private UserService userService;
private static TestUtil1 testUtil1;
@PostConstruct // 初始化
public void init(){
testUtil1 = this;
testUtil1.redisTemplate = this.redisTemplate;
testUtil1.userService = this.userService;
}
public static void test() {
testUtil1.redisTemplate.opsForValue().set("test1", "test1");
User u =testUtil1.userService.getOne(1L);
System.out.println("@PostConstruct private TestUtil1 testUtil1");
}
}