2014-11-24 148 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