¿Hay alguna forma de usar @Autowired
con campos estáticos? Si no, ¿hay otras formas de hacerlo?¿Se puede usar @Autowired con campos estáticos?
Respuesta
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.
Crea un bean que puedes autoaumentar, que inicializará la variable estática como efecto secundario.
@Autowired
se puede utilizar con setters para que pueda tener un setter que modifique un campo estático.
Sólo una sugerencia final ... NO
se puede lograr esto usando la notación XML y la MethodInvokingFactoryBean
. Para un ejemplo, busque here.
private static StaticBean staticBean;
public void setStaticBean(StaticBean staticBean) {
StaticBean.staticBean = staticBean;
}
Usted debe tratar de usar la inyección primavera, cuando sea posible, ya que es el método recomendado pero esto no siempre es posible, ya que estoy seguro de que puede imaginar como no todo puede ser retirado del recipiente de la primavera o tal vez lidiar con sistemas heredados.
Nota: las pruebas también pueden ser más difíciles con este enfoque.
@Component
public class NewClass{
private static SomeThing someThing;
@Autowired
public void setSomeThing(SomeThing someThing){
NewClass.someThing = someThing;
}
}
¿Alguna idea de cómo puedo usar este enfoque al inicializar un repositorio? – kiedysktos
Init su componente autowired 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();
}
}
- 1. Java: campos transitorios estáticos
- 2. declaración final de carrera con campos estáticos
- 3. luabind y campos estáticos
- 4. Descargar campos estáticos
- 5. Java: ¿en qué orden se inicializan los campos finales estáticos?
- 6. @autowired en clases estáticas
- 7. ¿por qué no podemos autocablear campos estáticos en la primavera
- 8. Android: campos estáticos y fugas de memoria
- 9. Interfaces con campos estáticos en Java para compartir 'constantes'
- 10. Cómo usar archivos estáticos con django nonrel
- 11. ¿Cuándo comienzan a existir los campos estáticos?
- 12. ¿Se puede usar Django con py2exe?
- 13. ¿Se puede usar node.js con IIS?
- 14. ¿Se puede usar currying con funciones lambda?
- 15. ¿Se puede usar MySqlBulkLoader con una transacción?
- 16. ¿Se puede usar Console2 con Powershell?
- 17. ¿Se puede usar valgrind junto con Cygwin?
- 18. ¿Se puede usar Clutter con Python 3?
- 19. ¿Se puede usar counter_cache con has_many?
- 20. ¿se puede usar batman.js con express?
- 21. Pruebas de JUnit independientes con Springs @Autowired
- 22. Los tipos estáticos no se pueden usar como parámetros
- 23. Spring @Autowired @ Lazy
- 24. ¿Por qué una clase interna no estática no puede tener miembros estáticos (campos y métodos)?
- 25. Spring @Autowired usage
- 26. ¿Cómo usar @Autowired en un trabajo de Quartz?
- 27. Cómo usar Spring Autowired en un interceptor cxf personalizado?
- 28. diferencias de rendimiento entre los campos primitivos finales estáticos y no estáticos en Java
- 29. No se puede usar DialogResult
- 30. Acceder a dejar los campos vinculados de los miembros estáticos
Cuando encuentre el código antiguo de hacer esto, es un anti-patrón. Entrecierra los ojos, inclina tu cabeza y encuentra una mejor manera de resolver el problema. Estaras contento de haberlo hecho. –
esta [respuesta] (http://stackoverflow.com/a/3746611/409976) también es útil en Spring @' AutoWired' –
Puede encontrar más información actualizada [answer here] (http://stackoverflow.com/a/ 17660550) – nmy