Java:项目启动初始化@PostConstruct

@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");
    }
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值