2014-11-24 84 views
4

我有一个@Service注解类,它提供,我可以在我所有的项目中使用的核心功能:春豆别名在JavaConfig

@Service 
public class MyService {} 

,另一种延伸它来实现项目的具体的东西:

@Service 
public class ExtendedMyService extends MyService {} 

现在我想配置一个bean别名可以使用属性自动装配时使用@Qualifier("MyServiceAlias")

# MyService qualifier (default: myService) 
myService.qualifier=extendedMyService 

在XML它看起来像:

<alias name="${myService.qualifier}" alias="MyServiceAlias" /> 

它也讨论here,但我需要做的是W/O XML,只有JavaConfig。 是否可能以及如何实现?

回答

9

有一个开放JIRA来此:https://jira.spring.io/browse/SPR-6736

的解决方法是在@Configuration类使用@Bean

@Configuration 
public class AppConfig { 

    @Bean(name = { "dataSource", "subsystemA-dataSource", "subsystemB-dataSource" }) 
    public MyService myService() {} 

} 
+0

我想存储预选赛中一个属性文件,该文件notpossible我。 – dtrunk 2014-11-26 12:14:53

2

如果你要使用的占位符,另一个解决办法是使用@Bean在一个@Configuration类,使用@Value和Spring applicationContext。

@Configuration 
public class AppConfig { 

@Autowired 
private ApplicationContext context; 

@Bean 
    public MyService MyServiceAlias(@Value("${myService.qualifier}") String qualifier) { 
     return (MyService) context.getBean(qualifier); 
    } 
} 

注:特殊考虑必须采取必须在开始加载占位符豆(CF javadoc