Estoy convirtiendo un controlador a la versión de anotación más nueva. En la versión anterior, solía especificar el método init en springmvc-servlet.xml usando:
<beans>
<bean id="myBean" class="..." init-method="init"/>
</beans>
¿Cómo puedo especificar el método init usando la versión de anotación?
java
spring
annotations
controller
Krt_Malta
fuente
fuente
Respuestas:
Puedes usar
fuente
Alternativamente, puede hacer que su clase implemente la
InitializingBean
interfaz para proporcionar una función de devolución de llamada (afterPropertiesSet()
) que ApplicationContext invocará cuando se construya el bean.fuente
Hay varias formas de interceptar el proceso de inicialización en Spring. Si tiene que inicializar todos los beans y conectarlos automáticamente / inyectarlos, hay al menos dos formas que conozco que asegurarán esto. Solo he probado el segundo, pero creo que ambos funcionan igual.
Si está utilizando @Bean, puede hacer referencia mediante initMethod, así.
Si está utilizando @Component, puede anotar con @EventListener de esta manera.
En mi caso, tengo un sistema heredado en el que ahora estoy usando IoC / DI donde Spring Boot es el marco elegido. El sistema antiguo trae muchas dependencias circulares a la tabla y, por lo tanto, debo usar mucho la dependencia del setter. Eso me dio algunos dolores de cabeza ya que no podía confiar en @PostConstruct ya que aún no se había realizado el cableado automático / inyección por parte del colocador. El orden es constructor, @PostConstruct y luego configuradores con cableado automático. Lo resolví con la anotación @EventListener que se ejecutará en último lugar y al "mismo" tiempo para todos los beans. El ejemplo también muestra la implementación de InitializingBean.
Tengo dos clases (@Component) con dependencia entre sí. Las clases tienen el mismo aspecto para el propósito de este ejemplo que muestra solo una de ellas.
Esta es la salida del registro que muestra el orden de las llamadas cuando se inicia el contenedor.
Como puede ver, @EventListener se ejecuta en último lugar después de que todo esté listo y configurado.
fuente
fuente