Voici une raison pour laquelle le printemps ne peut pas injecter des variables statiques. Les détails spécifiques sont les suivants:
L'injection de dépendance à ressort est une méthode de jeu de dépendances
La méthode de définition est une méthode d'objet normal
Les variables statiques sont des attributs des classes
@Autowired Private Static JDBCTemplate JDBCTemplate;
En regardant simplement ce processus d'injection, il n'y a pas d'erreur, mais le prochain JDBCTemplate.Query () rapportera une erreur de pointeur nul.
PS: le printemps injecte des variables statiques
Aujourd'hui, j'ai rencontré un problème. Une de mes classes d'outils fournit plusieurs méthodes statiques. Les méthodes statiques nécessitent une autre instance de classe pour fournir un traitement, j'ai donc écrit ce code:
Class util {private static xxx xxx; xxx = beanutil.getBean ("xxx"); Public static void method () {xxx.func (); } Public static void méthode () {xxx.func (); }}Voici la façon d'utiliser GetBean pour obtenir une instance XXX, mais d'autres disent que cette méthode n'est pas bonne et veut l'injecter.
Mais comment injecter des xxx statiques?
J'ai recherché de nombreuses déclarations en ligne, mais c'était en fait très simple:
Class util {private static xxx xxx; public void setxxx (xxx xxx) {this.xxx = xxx; } public void getxxx () {return xxx; } public static void method1 () {xxx.func1 (); } public static void method2 () {xxx.func2 (); }}Configurez simplement l'injection dans XML normalement.
<bean value = "test"> <propriété value = "xxx" ref = "xxx" /> </ bean>
Notez ici que les méthodes Getter et Setter générées automatiquement auront des qualifications statiques et devront être supprimées avant de pouvoir être terminées.