Existe-t-il un moyen d'utiliser @Autowired
avec des champs statiques. Si non, existe-t-il d'autres moyens de le faire?Pouvez-vous utiliser @Autowired avec des champs statiques?
Répondre
En bref, non. Vous ne pouvez pas autowire ou manuellement des champs statiques dans Spring. Vous devrez écrire votre propre logique pour le faire.
Créez un bean que vous pouvez créer automatiquement et qui initialisera la variable statique en tant qu'effet secondaire.
@Autowired
peut être utilisé avec des setters afin que vous puissiez avoir un setter modifiant un champ statique.
Juste une dernière suggestion ... NE PAS
Vous pouvez y parvenir en utilisant la notation XML et MethodInvokingFactoryBean
. Pour un exemple, regardez here.
private static StaticBean staticBean;
public void setStaticBean(StaticBean staticBean) {
StaticBean.staticBean = staticBean;
}
Vous devriez viser à utiliser injection de printemps, si possible, car cela est l'approche recommandée mais ce n'est pas toujours possible car je suis sûr que vous pouvez imaginer que tout ne peut pas être tiré du récipient à ressort ou vous peut-être traiter avec des systèmes hérités. Remarque test peut également être plus difficile avec cette approche.
@Component
public class NewClass{
private static SomeThing someThing;
@Autowired
public void setSomeThing(SomeThing someThing){
NewClass.someThing = someThing;
}
}
une idée de comment je peux utiliser cette approche lors de l'initialisation d'un dépôt? – kiedysktos
Init votre composant autowired dans la méthode @PostConstruct
@Component
public class TestClass {
private static AutowiredTypeComponent component;
@Autowired
private AutowiredTypeComponent autowiredComponent;
@PostConstruct
private void init() {
component = this.autowiredComponent;
}
public static void testMethod() {
component.callTestMethod();
}
}
- 1. Utiliser __call avec des classes statiques?
- 2. Méthodes statiques fonctionnant sur des champs d'instance
- 3. Classes génériques avec des champs statiques partagés en C#
- 4. Caractéristique intéressante avec les champs statiques. StackOverflow exception
- 5. Accéder aux champs statiques en XAML
- 6. Pourquoi ne puis-je pas utiliser des membres statiques, par exemple des structures statiques, dans mes classes de VS2008?
- 7. Classes statiques avec l'iPhone
- 8. Pourquoi Char.MinVal/.MaxVal ne sont pas statiques? Pourquoi ne pas rendre ces champs statiques?
- 9. Champs globaux statiques dans une bibliothèque partagée - Où vont-ils?
- 10. Liaison avec des bibliothèques statiques et dynamiques dans MSVC
- 11. Threading à partir d'une classe avec des méthodes statiques et non statiques
- 12. JAXB Marshalling avec des champs nuls
- 13. Comment supprimer des champs avec Activewarehouse-etl?
- 14. Effacement des champs de saisie avec JavaScript
- 15. javascript: formes multiples avec des champs désignés
- 16. Grails: gérer des données statiques
- 17. Comment utiliser linq pour trier plusieurs champs?
- 18. Menu des pages statiques Magento
- 19. en PHP, quand devrais-je utiliser des méthodes statiques vs des classes abstraites?
- 20. C# Quand utiliser des classes statiques plutôt que des instances de classes?
- 21. fonctions C# avec les données statiques
- 22. Variables statiques dans ASP.NET
- 23. Utilisation des "champs supplémentaires" de django relations plusieurs-à-plusieurs avec des champs supplémentaires
- 24. Comment se moquer des méthodes statiques?
- 25. Django - concevoir des modèles avec des champs virtuels?
- 26. Initialisateurs statiques dans bcel
- 27. Utiliser awk pour obtenir champs suivants
- 28. Méthodes statiques et sécurité des threads
- 29. Héritage des membres statiques dans PHP
- 30. Activateur et classes statiques
Lorsque vous trouvez ancien code faisant cela, il est un anti-modèle. Strabisme, penchez la tête et trouvez une meilleure façon de résoudre le problème. Vous serez heureux de l'avoir fait. –
this [réponse] (http://stackoverflow.com/a/3746611/409976) est également utile sur '@ AutoWired' du printemps –
Vous pouvez trouver plus à jour [répondre ici] (http://stackoverflow.com/a/ 17660550) – nmy