English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Al usar la escaneo de componentes, es necesario especificar la ruta de escaneo en la configuración XML.
<context:component-scan back-package="yangjq.test">
La instanciación del contenedor escaneará todos los componentes de clase en el paquete yangjq.test y sus subpaquetes.
Sólo cuando las clases de componentes antes de la definición del componente tienen las marcas de anotación siguientes, estos componentes de clase se escanearán en el contenedor de Spring
- @Component Anotación genérica
- @Name Anotación genérica
- @Repository Anotación de componente de capa de persistencia
- @Service Anotación de componente de capa de negocio
- @Controller Anotación de componente de capa de control
Nombramiento
Durante el proceso de escaneo del componente, se generará un valor de id predeterminado (el nombre de la clase en minúsculas), que también se puede personalizar en la anotación, por ejemplo:
//Este es el id predeterminado, con el valor OracleUserDao @Repository public class OracleUserDao implements UserDao{ } //Este es el id personalizado, con el valor loginService @Service("loginService") public class UserService{ }
Ámbito del componente
Los componentes gestionados por Spring suelen tener el ámbito predeterminado "singleton", si se necesita otro ámbito, se puede usar la anotación @Scope, simplemente proporcionando el nombre del ámbito en la anotación.
@Scope("prototype") @Repository public class OracleUserDao implements UserDao{ }
Inicialización y destrucción
Las anotaciones @PostConstruct y @PreDestroy se utilizan para especificar métodos de retroalimentación de inicialización y destrucción, por ejemplo:
public class ExampleBean{ @PostConstruct public void init(){ //.......inicialización } @PreDestroy public void destroy(){ //........destrucción } }
Para las anotaciones de Bean con relaciones de inyección
Puede usar uno de los siguientes para implementar la inyección de relaciones
- @Resource
- @AutoWired/@Qualifier
- @Inject/@Named
Generalmente se usa @Resource más, digamos @Resource, otros se buscan mientras se usan
La anotación @Resource se puede usar antes de la definición de campo o método setter, por defecto se realiza la inyección primero por nombre, luego por tipo
public class UserSerivce{ //@Resource, esto se utiliza antes de la definición de campo private UserDao userDao; @Resource //Esto se utiliza antes del método setter public void setUserDao(UserDao dao){ this.UserDao = dao; } }
Al encontrar múltiples coincidencias de Bean, la inyección puede producir errores, puede especificar explícitamente el nombre, por ejemplo, @Resource(name = "exampleDao").
Resumen
Esto es todo el contenido detallado sobre el escaneo de componentes basado en anotaciones de este artículo, espero que sea útil para todos. Los amigos interesados pueden continuar consultando otros temas relacionados de este sitio, y si hay deficiencias, son bienvenidos a dejar comentarios. Agradecemos el apoyo de los amigos a este sitio!
Declaración: El contenido de este artículo se obtiene de la red, es propiedad del autor original, el contenido se contribuye y carga de manera autónoma por los usuarios de Internet, este sitio no posee los derechos de propiedad, no se ha procesado editorialmente por humanos y no asume la responsabilidad legal relevante. Si encuentra contenido sospechoso de copyright, por favor envíe un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, reemplace # con @) para denunciar, y proporcione pruebas relacionadas. Una vez verificada, este sitio eliminará inmediatamente el contenido sospechoso de infracción.