Luego de indagar en varios repositorios y páginas webs al concluir hemos descubierto la respuesta que te mostraremos a continuación.
Solución:
No, prácticamente no creo que haya ninguna diferencia, pero hay prioridades en la forma en que funcionan. @PostConstruct
, init-method
son BeanPostProcessors.
@PostConstruct
es una anotación JSR-250 mientrasinit-method
es la forma de Spring de tener un método de inicialización.- Si tienes un
@PostConstruct
método, este se llamará primero antes de que se llamen los métodos de inicialización. - Si su bean implementa InitializingBean y anula
afterPropertiesSet
primero@PostConstruct
se llama, entonces elafterPropertiesSet
y entoncesinit-method
.
Para obtener más información, puede consultar la documentación de referencia de Spring.
Antes de las especificaciones JSR 250, se prefería el uso del método init en xml, ya que desacopla las clases Java (beans) de cualquier clase/anotación específica de Spring. Por lo tanto, si está creando una biblioteca que no necesita depender de los beans de infraestructura de Spring entonces se prefirió el uso del método init. Durante el método de creación, puede especificar el método que debe llamarse como método de inicialización.
Ahora, con la introducción de las especificaciones JSR 250 en Java EE y la compatibilidad con Spring de estas anotaciones, la dependencia de Spring Framework se ha reducido hasta cierto punto.
Pero tengo que admitir que la adición de estas cosas aumenta la legibilidad del código. Así que hay pros y contras en ambos enfoques.
No hay diferencia real. Depende de cómo prefiera configurar su sistema, y eso es una cuestión de elección personal. Yo mismo, prefiero usar @PostConstruct
anotaciones para mi propio código (ya que el bean solo se configura correctamente después de llamar al método) y uso init-method
al crear instancias de beans de bibliotecas que no son compatibles con Spring (¡no se pueden aplicar anotaciones allí, por supuesto!) Pero puedo entender totalmente a las personas que quieren hacerlo todo de una forma u otra.
@postconstruct no es parte de la primavera. Es parte del paquete javax. Ambos son iguales. usando el método init, necesitamos agregarlo en el archivo xml. Si usa @postconstruct, no es necesario agregar xml. Consulte el siguiente artículo.
http://answersz.com/spring-postconstruct-and-predestroy/
Al final de la página puedes encontrar los comentarios de otros programadores, tú asimismo puedes insertar el tuyo si te apetece.