Ambos se pueden usar para obtener la instancia de bean, pero ¿cuál es mejor para implementar?¿Cuál es la diferencia entre Spring BeanFactoryAware y ApplicationContextAware?
Respuesta
Si necesita una referencia al BeanFactory
, utilice BeanFactoryAware
. Si necesita una referencia al ApplicationContext
, utilice ApplicationContextAware
.
Tenga en cuenta que la interfaz ApplicationContext
es una subclase de BeanFactory
y proporciona métodos adicionales sobre la interfaz básica BeanFactory
.
Si todo lo que necesita hacer es llamar al getBean()
, entonces BeanFactory
es suficiente.
Tenga en cuenta también que Spring 2.5+ proporciona una forma más agradable de conectarse con un BeanFactory
o ApplicationContext
, p. Ej.
private @Autowired ApplicationContext appContext;
private @Autowired BeanFactory beanFactory;
No hay necesidad de los XyzAware
interfaces.
¿Necesita acceso a las funciones adicionales disponibles en ApplicationContext? Si es así, entonces por supuesto debe usar ApplicationContextAware. De lo contrario, BeanFactoryAware será suficiente.
Entre muchas otras cosas, un ApplicationContext tiene métodos adicionales para inspeccionar los beans, p. containsBeanDefinition, getBeanDefinitionCount, getBeanDefinitionNames, getBeanNamesForType, getBeansOfType que pueden ser útiles para usted y los que no están disponibles en BeanFactory
lo general implemento ApplicationContextAware
Un ApplicationContext
es una versión extendida de BeanFactory
y por lo tanto ofrece funcionalidades adicionales.
Entonces si usar ApplicationContextAware
o BeanFactoryAware
se reduce a la pregunta: ¿Usted explícitamente necesita alguna de las funcionalidades adicionales de ApplicationContext
? Si implementas el ApplicationContextAware
, de lo contrario mantente en BeanFactoryAware
.
- 1. ¿Cuál es la diferencia entre estas 2 inyecciones Spring IOC?
- 2. ¿Cuál es la diferencia entre las dependencias spring-context y spring-core?
- 3. ¿Cuál es la diferencia entre un contexto de aplicación Spring y un contenedor Spring?
- 4. ¿Cuál es la diferencia entre {0} y ""?
- 5. Cuál es la diferencia entre = y: =
- 6. ¿Cuál es la diferencia entre .ToString (+) y ""
- 7. Cuál es la diferencia entre $ (...) y `...`
- 8. ¿cuál es la diferencia entre:.! y: r !?
- 9. ¿Cuál es la diferencia entre ".equals" y "=="?
- 10. ¿Cuál es la diferencia entre dict() y {}?
- 11. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 12. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 13. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 14. ¿Cuál es la diferencia entre + = y = +?
- 15. ¿Cuál es la diferencia entre " " y ""?
- 16. Cuál es la diferencia entre $ y jQuery
- 17. ¿Cuál es la diferencia entre ModelAndView y ModelMap?
- 18. ¿Cuál es la diferencia entre LocalContainerEntityManagerFactoryBean y LocalEntityManagerFactoryBean?
- 19. Cuál es la diferencia entre Class Path y Build Path
- 20. ¿Cuál es la diferencia entre usar @Transactional y la plantilla de Spring?
- 21. OpenGL (ES) - ¿Cuál es la diferencia entre frustum y orto?
- 22. Cuál es la diferencia entre la función() {}() y la función() {}()
- 23. ¿Cuál es la diferencia entre la abstracción y la encapsulación?
- 24. ¿Cuál es la diferencia entre @ y $ y% en MSBuild?
- 25. Cuál es la diferencia entre corePoolSize y maxPoolSize en el Spring ThreadPoolTaskExecutor
- 26. En una solicitud GET de Spring 3.0, ¿cuál es la diferencia entre @PathVariable y @RequestParam
- 27. ¿Cuál es la diferencia entre ROLE_USER y ROLE_ANONYMOUS en una configuración de url Spring intercept?
- 28. ¿Cuál es la diferencia entre @Secured y @PreAuthorize en spring security 3?
- 29. ¿Cuál es la diferencia entre la vinculación estática y dinámica?
- 30. ¿Cuál es la diferencia entre la sección .got y .got.plt?
En caso de autocableado, ¿es posible capturar el evento setContext/beanFactory? En el constructor appContext/beanFactory aún no se ha establecido ... – ksimon