Aqui está uma razão pela qual a primavera não pode injetar variáveis estáticas. Os detalhes específicos são os seguintes:
A injeção de dependência da mola é um método de conjunto de dependência
O método de conjunto é um método de objeto normal
Variáveis estáticas são atributos de classes
@AUTOWIRED PRIVADO PRIVADO JDBCTEMPLATE JDBCTEMPLATE;
Apenas olhando para esse processo de injeção, não há erro, mas o próximo JDBCTemplate.Query () relatará um erro de ponteiro nulo.
PS: Spring Injeta variáveis estáticas
Hoje encontrei um problema. Uma das minhas classes de ferramentas fornece vários métodos estáticos. Os métodos estáticos exigem outra instância de classe para fornecer processamento, então escrevi este código:
Classe util {private static xxx xxx; xxx = beanutil.getbean ("xxx"); public static void method () {xxx.func (); } public static void method () {xxx.func (); }}Aqui está a maneira de usar o getBean para obter a instância xxx, mas outros dizem que esse método não é bom e querem injetar.
Mas como injetar xxx estático?
Eu pesquisei muitas declarações online, mas na verdade era muito simples:
Classe 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 (); }}Basta configurar a injeção em XML normalmente.
<bean value = "test"> <Property value = "xxx" ref = "xxx"/> </i bean>
Observe aqui que os métodos Getter e Setter gerados automaticamente terão qualificadores estáticos e precisarão ser removidos antes que possam ser feitos.