前言:
在Java开发过程中我们经常需要用到@Autowired这个注解,我们的正常使用会在Controller层注入service,在service中注入mapper。本人在使用SSM框架开发时遇到了无法注入bean的问题,现已解决供大家参考。由于每个人的错误原因可能不同,因此我把我解决好的方法放在了第一个。
1.@Autowired后加参数(required=false)(本人最终靠此方法解决)
@Autowired(required=true):当使用@Autowired注解的时候,默认就是表示注入的时候,该bean必须存在,否则就会注入失败。
@Autowired(required=false):表示忽略当前要注入的bean,如果有直接注入,没有跳过,不会报错。
未加之前:
加之后:
2.降低 Autowired 检测的级别,将 Severity 的级别由之前的 error 改成 warning 或其它可以忽略的级别
3.导入 @Service 包的时候导入包错误造成的:
spring auto scan 配置,在编辑情况下,无法找不到对应的bean,于是提示找不到对应 bean 的错误。常见于 mybatis 的 mapper,如下:
<!-- mapper scanner configurer -->
<bean id="mapperScannerConfig" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.adu.spring_test.mybatis.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
解决办法:
错误导包:
import com.alibaba.dubbo.config.annotation.Service;
正确导包:
import org.springframework.stereotype.Service;