@Autowired注解放在方法上

spring | 2020-03-03 14:14:47

@Autowired一般用在变量上,spring容器会自动注入值。

如果用在方法上:

@Autowired(required = false)
public void setRedisTemplate(RedisTemplate redisTemplate) {
    RedisSerializer stringSerializer = new StringRedisSerializer();
    redisTemplate.setKeySerializer(stringSerializer);
    redisTemplate.setValueSerializer(stringSerializer);
    redisTemplate.setHashKeySerializer(stringSerializer);
    redisTemplate.setHashValueSerializer(stringSerializer);
    this.redisTemplate = redisTemplate;
}

spring容器会在类加载后自动注入这个方法的参数,并执行一遍方法。

这就像static{}块语句会初始化执行,但顺序不一样。

登录后即可回复 登录 | 注册
    
  • houyong
    houyong

    特意试了一下 static和autowired的执行顺序 - 结果static先执行
    案例:

    static {
    	System.out.println("执行static");
    }
    
    @Autowired
    public void test(){
    	System.out.println("执行autowire");
    }

    输出:

    执行static
    执行autowire

     

关注编程学问公众号