【发布时间】:2025-12-25 15:30:10
【问题描述】:
假设我有几个组件依赖于一项服务:
public interface MyService { ... }
// in package1
@Component
public class Package1Component1 {
@Autowired
private final MyService myService;
}
public class Package1Component2 {
@Autowired
private final MyService myService;
}
// in package 2
public class Package2Component1 {
@Autowired
private final MyService myService;
}
public class Package2Component2 {
@Autowired
private final MyService myService;
}
我有两个MyService 的实现:
@Service
public class MyServiceImpl1 implements MyService { ... }
@Service
public class MyServiceImpl2 implements MyService { ... }
我希望将 MyServiceImpl2 注入到 package2 中的所有组件和 MyServiceImpl1 其他任何地方
我不想使用 @Qualifier 来解决歧义,因为当您需要注入 MyService 时需要始终指定它,并且当我需要在任何地方切换到单个实现时(@ 987654328@ 是临时实现,只能在特定范围内使用)。
有没有办法为scope(java 包?)指定 bean,就像在 Angular 中我可以覆盖模块提供程序(在这种情况下为AuthService):
@NgModule({
declarations: [LoginComponent, UserInfoComponent],
providers: [
{
provide: AuthService,
useClass: FacebookAuthService,
},
],
})
export class AuthModule {}
【问题讨论】:
标签: java spring dependency-injection