SpringMVC注解@Autowired(自动注入)详解

1. 基于注解方式进行自动装配的三个注解

@Autowired 可以修饰属性,构造方法,set方法,默认依据类型(属性类型,参数类型)为属性注入值.假如Spring容器中有多个相同类型的值,会参考名字进行匹配查找(属性名,set方法参数名,构造方法参数名),假如名字有相同的则注入,没有相同的会注入失败.

@Qualifier 配合@Autowired注解按名字为属性注入值.

@Resource 可以修饰属性或set方法,默认依据名字(属性名,set方法名)为属性注入值.假如spring容器中有名字相同但类型不同的bean就会注入失败,当没有找到对应名字的bean对象,此时会依据类型再次进行查找,假如相同类型则直接注入,当有多个相同类型可能会注入失败(假如是按set方法进行注入,依据方法名字没找到,还会按参数类型查找,对应类型有多个,还可能会按参数名查找,假如没找对应的,则注入失败).

2. 使用Autowired出现null异常

使用SpringMVC框架,在开发的过程中有非controller类需要调用由spring管理的service层。但是使用@Autowired注解注入Service,会报null异常,通过new在工具类中实例化引入对象时,虽然当前引入对象不再报空指针,但是与引入对象关联的其他对象仍然会报null异常,为此在网上查到如下解决办法:

SpringMVC注解@Autowired(自动注入)详解_第1张图片

你可能感兴趣的:(SpringMVC注解@Autowired(自动注入)详解)