遇到@org.springframework.beans.factory.annotation.Autowired(required=true)问题

报错为:
The injection point has the following annotations: - @org.springframework.beans.factory.annotation.Autowired(required=true)

代码:

   @Autowired
    private RedisTemplate<String, Object> redisTemplate;

问题可以归纳为在自动注入时找不到这个Bean。

解决

我们知道 :
1.@Autowired 是根据 类型 (byType)注入的 ,然后在找到type类型的bean时,如果发现有异常(不唯一等),会再去根据name去找bean注入。
2.@Resource 默认是根据 ByName注入的 , 然后如果发现有异常(不唯一等),会再去根据type去找bean注入。同时,提供了name、type两个属性可以进行指定name或者type.

更多点击:@Autowired 和 @Resource区别

分步解决:
1.可以将@Autowired注解改为@Resource,试一下。
2.我们在controller使用的service没有注入spring容器,那么我们可以在启动类上,加上包扫描注解,让这个bean所在的包能扫描到。

我是将@Autowired注解改为@Resource,运行成功了!

遇到@org.springframework.beans.factory.annotation.Autowired(required=true)问题_第1张图片

你可能感兴趣的:(编程笔记(问题解决),java,spring)