目前,在做springboot与ActiveMQ的整合时,出现一个问题,就是相同类型的bean,但是不同的bean名称,但是我需要同时进行注入。下面记录一下过程。
两个bean
@Bean(autowire = Autowire.BY_NAME,value = "queue")
public Queue queue() {
return new ActiveMQQueue("ActiveMQQueue");
}
@Bean(autowire = Autowire.BY_NAME,value = "QueueProduct")
public Queue QueueProduct(){
return new ActiveMQQueue("productQueue");
}
在controller注入
@RestController
@RequestMapping("/producer")
public class ProducerController {
//注入点对点的模式(Queue模式)
@Resource(name = "queue")
private Queue queue;
//注入queue模式
@Resource(name = "QueueProduct")
private Queue queueProduct;
}
此时可以同时使用这两个Queue对象;
@Autowaired注解的使用
接口:
public interface IUserService {
User queryList();
}
实现类:
@Service
public class UserService implements IUserService {
@Override
public User queryList() {
return null;
}
}
@Service
public class UserService2 implements IUserService {
@Override
public User queryList() {
return null;
}
}
Controller:
加注解@Qualifier即可识别
若出现不同类实现同一接口时,并用@Autowaired注解进行注入接口时,此时结合@Qualifier 注解来指定名称。