JavaConfig et Autowiring : problème de bean unique
Bonjour,
J'utilise Spring 2.5, et JavaConfig pour la configuration. Pour chaque couche de l'architecture (domain / service / web), j'utilise une classe de configuration, importée (via @Import) par la couche supérieure.
Couche domain
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| @AnnotationDrivenConfig
@Configuration
public abstract class DomainContext extends ConfigurationSupport {
@Bean
public MessageSource domainMessageSource() {
ReloadableResourceBundleMessageSource domainMessageSource = new ReloadableResourceBundleMessageSource();
domainMessageSource.setBasename("domain");
domainMessageSource.setDefaultEncoding("UTF-8");
domainMessageSource.setCacheSeconds(-1);
return domainMessageSource;
}
} |
Couche service
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| @Import(DomainContext.class)
@AnnotationDrivenConfig
@Configuration
public abstract class ServiceContext extends ConfigurationSupport {
@Bean
public MessageSource serviceMessageSource() {
ReloadableResourceBundleMessageSource serviceMessageSource = new ReloadableResourceBundleMessageSource();
serviceMessageSource.setBasename("service");
serviceMessageSource.setDefaultEncoding("UTF-8");
serviceMessageSource.setCacheSeconds(-1);
return serviceMessageSource;
}
} |
Couche web
Code:
1 2 3 4 5 6
| @Import(ServiceContext.class)
@AnnotationDrivenConfig
@Configuration
public abstract class WebContext extends ConfigurationSupport {
// ...
} |
Je cherche simplement à accéder, dans la configuration web, soit à tous mes objets de type MessageSource, soit au moins à celui identifié domainMessageSource. J'ai donc essayé pas mal de choses :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| @Autowired
private MessageSource[] messagesSources;
@Autowired
private Collection<MessageSource> messagesSources;
@Autowired
@Qualifier("domainMessageSource")
private MessageSource domainMessageSource;
@Resource
private MessageSource domainMessageSource;
@Resource(name="domainMessageSource")
private MessageSource domainMessageSource; |
Tout aboutit à la même erreur (j'ignore d'où sort le troisième objet : messageSource !) :
Citation:
No unique bean of type [org.springframework.context.MessageSource] is defined: expected single matching bean but found 3: [domainMessageSource, serviceMessageSource, messageSource]
Comment débloquer cette situation ? Merci.