Spring 注解使用需要注意的几个点
2020-04-10 本文已影响0人
王广帅
注解依赖注入处理的地方
@Autowired, @Inject, @Value, and @Resource 这几个注册的处理是在BeanPostProcessor接口的实现类中实现的。所以自己的自定义BeanPostProcessor中,不能使用这几个注解,它是无效的。
@Primary
当使用@Autowired注解的时候,如果一个接口有多个实现类,它就不知道使用哪个了,就会报异常,可以使用@Primary来指定要使用的实例
@Configuration
public class MovieConfiguration {
@Bean
@Primary
public MovieCatalog firstMovieCatalog() { ... }
@Bean
public MovieCatalog secondMovieCatalog() { ... }
// ...
}
@Qualifier
在使用@Primary的时候,只能指定一个bean,如果有多个bean,在不同的场景需要注入不同的bean时,可以使用@Qualifier注解。只需要给每个bean指定好自己的名字,在使用的时候,使用@Qualifier指定要注入的bean名字即可。
@Service("a")
public class MyServiceImplA implements MyService {
}
@Service("b")
public class MyServiceImplB implements MyService {
}
@Controller
@RequestMapping("/service")
public class EmployeeInfoControl {
@Autowired
@Qualifier("b") //这里就是注入的b的bean
MyService myService;
@RequestMapping(params = "method=my")
public void show(HttpServletRequest request, HttpServletResponse response, JSONObject dto) {
#略
}
}