autowire加载指定实现类_一个接口多个实现类,controller层如何指定特定实现类进行调用?...
时间: 2023-12-30 19:04:58 浏览: 81
在 Spring 中,如果一个接口有多个实现类,可以使用 `@Qualifier` 注解来指定要注入的实现类。在 controller 层中也可以使用 `@Qualifier` 注解来指定要使用的实现类。
首先,在接口的多个实现类中使用 `@Qualifier` 注解来指定每个实现类的名称,如下所示:
```java
@Service
@Qualifier("impl1")
public class MyServiceImpl1 implements MyService {
// ...
}
@Service
@Qualifier("impl2")
public class MyServiceImpl2 implements MyService {
// ...
}
```
然后在 controller 层中使用 `@Autowired` 和 `@Qualifier` 注解来指定要使用的实现类,如下所示:
```java
@RestController
public class MyController {
@Autowired
@Qualifier("impl1")
private MyService myService;
// ...
}
```
这样就可以指定要使用的实现类进行调用了。
相关问题
package com.example.projectdmo.controller; import com.example.projectdmo.aop.impl.UserServiceImpl; import com.example.projectdmo.aop.impl.XXXX; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class testController { // @Autowired private XXXX xxxx; public XXXX getXxxx() { return xxxx; } public void setXxxx(XXXX xxxx) { this.xxxx = xxxx; } @RequestMapping("/test") public void test() { System.out.println(xxxx.yy()); } } @Bean(autowire = Autowire.BY_TYPE) public XXXX xxxx(){ return new XXXX(); } 为什么xxx注入失败
根据提供的代码,可以看出 @Autowired 注解标注的是 private XXXX xxxx 属性,但是没有提供对应的 setter 方法。因此,Spring 无法通过 setter 方法来完成对该属性的注入。建议给 testController 类中的 private XXXX xxxx 属性添加一个对应的 setter 方法,或者使用 @Autowired 注解标注在对应的 setter 方法上,来完成自动注入。此外,可以尝试调整 @Bean 注解的位置,将其放在一个被 Spring 扫描的配置类中,以确保该 bean 能够被正确地加载。
SqlSessionDaoSupport中的sqlSessionTemplate属性是不是由于设置了AbstractBeanDefinition.AUTOWIRE_BY_TYPE,而被自动注入了
是的,`SqlSessionDaoSupport` 中的 `sqlSessionTemplate` 属性是由于设置了 `AbstractBeanDefinition.AUTOWIRE_BY_TYPE`,在容器启动时自动注入的。具体来说,`SqlSessionDaoSupport` 继承了 `org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory` 类,该类默认使用 `AUTOWIRE_BY_TYPE` 作为自动装配的方式。因此,`SqlSessionDaoSupport` 中的 `sqlSessionTemplate` 属性会被自动装配为 `SqlSessionTemplate` 类型的 Bean。
阅读全文