@Autowired @Resource 之类的注解和初始化块哪个先执行?

如下代码,出错了

public class MyController{
  @Autowired
  private RedisTemplate<String, String> redisTemplate;

  SetOperations<String, String> setOperations;
  HashOperations<String, String, String> hashOperations;

  {
    setOperations = redisTemplate.opsForSet();
    hashOperations = redisTemplate.opsForHash();
  }

是不是注解没有初始化块先执行? 这种状况如何改?

holdtom
浏览 1526回答 8
8回答

PIPIONE

初始化块儿先执行然后再把对应的属性注入,所以你这里不能这样写你可以采用构造函数注入的方式试试

繁星点点滴滴

Spring在注入时,首先初始化类,然后根据@Autowired之类的注解进行注入。 @PostConstruct public void init(){ setOperations = redisTemplate.opsForSet(); hashOperations = redisTemplate.opsForHash(); } 使用@PostConstruct注解。

蓝山帝景

建议看下《Java编程思想》中的初始化顺序相关内容。肯定是先初始化,再注入了。如果初始化都没完成,注入对象到哪里去呢?

米脂

初始化优先级比较高,仅次于静态这里可以使用PostConstruct注解,顺序上Constructor >> @Autowired >> @PostConstruct

慕仙森

你得把报错信息贴上来。

慕的地6264312

肯定是先初始化的,然后再完成注入的一系列操作
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java