Spring Cloud

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) {
        #略
    }
}
上一篇下一篇

猜你喜欢

热点阅读