sirve resource que para java spring

java - resource - ¿Puedes usar @Autowired con campos estáticos?



@resource spring (6)

¿Hay alguna forma de usar @Autowired con campos estáticos? Si no, ¿hay otras formas de hacerlo?


Crea un bean que puedes conectar automáticamente y que inicializará la variable estática como efecto secundario.


En resumen, no. No se puede autoconectar o conectar manualmente campos estáticos en Spring. Tendrás que escribir tu propia lógica para hacer esto.


Inicie su componente autocableado en el método @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(); } }


Puede lograr esto utilizando la notación XML y MethodInvokingFactoryBean . Para un ejemplo, mira here .

private static StaticBean staticBean; public void setStaticBean(StaticBean staticBean) { StaticBean.staticBean = staticBean; }

Debería tratar de usar inyección de resorte siempre que sea posible, ya que este es el enfoque recomendado, pero no siempre es posible ya que estoy seguro de que puede imaginarse ya que no todo se puede extraer del contenedor de resorte o puede tratarse con sistemas heredados.

Las pruebas de notas también pueden ser más difíciles con este enfoque.


@Autowired se puede usar con setters para que pueda tener un setter que modifique un campo estático.

Solo una sugerencia final ... NO


@Component("NewClass") public class NewClass{ private static SomeThing someThing; @Autowired public void setSomeThing(SomeThing someThing){ NewClass.someThing = someThing; } }