Spring在运行时选择Bean实现

托比亚

我正在使用带有注释的Spring Bean,并且需要在运行时选择其他实现。

@Service
public class MyService {
   public void test(){...}
}

例如,我需要Windows平台,我需要MyServiceWin extending MyServiceLinux平台MyServiceLnx extending MyService

目前,我只知道一个可怕的解决方案:

@Service
public class MyService {

    private MyService impl;

   @PostInit
   public void init(){
        if(windows) impl=new MyServiceWin();
        else impl=new MyServiceLnx();
   }

   public void test(){
        impl.test();
   }
}

请考虑我仅使用注释,而不使用XML配置。

斯坦尼斯拉夫

您可以将bean注入移动到配置中,如下所示:

@Configuration
public class AppConfig {

    @Bean
    public MyService getMyService() {
        if(windows) return new MyServiceWin();
        else return new MyServiceLnx();
    }
}

或者,您可以使用配置文件windowslinux,然后用@Profile注释(如@Profile("linux")或)注释您的服务实现@Profile("windows"),并为您的应用程序提供此配置文件之一。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在运行时选择Spring bean实例

来自分类Dev

Spring在运行时注册bean

来自分类Dev

Spring在运行时注册bean

来自分类Dev

我如何在运行时知道为Spring Bean设置了哪些实现类?

来自分类Dev

选择在运行时注入哪种实现

来自分类Dev

使用Java 8在运行时选择具体的实现

来自分类Dev

春季在运行时添加bean

来自分类Dev

在运行时动态实现委托

来自分类Dev

选择在运行时创建的组件

来自分类Dev

如何在运行时使用Spring创建请求范围的Bean

来自分类Dev

如何在运行时实例化Spring托管的bean?

来自分类Dev

在运行时创建的Spring bean中使用@Scheduled批注

来自分类Dev

在运行时动态创建具有自动装配功能的Spring Bean

来自分类Dev

在运行时使用java.lang.annotation在Spring中检索bean

来自分类Dev

在运行时将属性值添加到Spring Bean

来自分类Dev

有没有办法在运行时重用 Hibernate 实现 Bean 验证的就地验证?

来自分类Dev

在运行时打印Objective-C方法的实现

来自分类Dev

在运行时实现接口的好处是什么?

来自分类Dev

是否可以在运行时使用Java实现接口?

来自分类Dev

使用依赖项注入在运行时确定实现

来自分类Dev

为什么在运行时未实现重载?

来自分类Dev

在运行时在代码后面选择资源文件

来自分类Dev

在运行时填充NetLogo选择器

来自分类Dev

在运行时填充NetLogo选择器

来自分类Dev

如何在运行时选择迭代器方向

来自分类Dev

在运行时使用继承的代码选择器

来自分类Dev

在运行时选择标题和文件名

来自分类Dev

如何在运行时使用Hibernate选择架构?

来自分类Dev

在运行时根据 UISegmented 控件的选择隐藏标签

Related 相关文章

热门标签

归档