Je vais avoir du mal à mettre tous ensemble:Comment injecter des paramètres de constructeur à partir de propriétés dans Spring 3.0 avec l'annotation @Named?
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:property-placeholder location="classpath:some-useful.properties"/>
<context:component-scan base-package="scan.me.scotty"/>
</beans>
principal est la suivante:
@Named
@Singleton
public class MySpringMain {
@Inject
public MySpringMain(final AReallyCool component) {
component.runForAWhile();
}
public static void main(final String... args) {
new ClassPathXmlApplicationContext(args);
}
}
Component est la suivante:
@Named
public class AReallyCool {
@Inject
public AReallyCool(@Named("whoAmI") final String whoAmI) {
// do something here
}
}
Et propriétés est:
whoAmI=Who is anyone, really?
naturellement (pour moi) printemps meurt la mort:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [java.lang.String] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.inject.Named(value=whoAmI)}
Questions:
- Est-ce même une approche raisonnable? J'essaie d'éviter les annotations spécifiques à Spring.
- Comment feriez-vous ce travail?
la réponse est trop longue. Vous pourriez simplement spécifier qu'il devrait utiliser 'Value' au lieu de' Named'. +1 de toute façon. Mais débarrassez-vous de '@ ImportResource'. Ce n'est pas nécessaire, et il est supposé être utilisé principalement avec les classes '@ Configuration'. – Bozho
Cela fonctionne très bien avec @Value. Je suis à la recherche d'une solution avec @Named. – binkley
@Bozho Je suis en désaccord sur la longueur, j'ai toujours trouvé des exemples utiles. Merci cependant avec le commentaire sur @ImportResource, point bien pris. – Bill