Anotación Spring @ComponentScan con ejemplo

Spring es uno de los marcos Java EE más populares. Es un marco ligero de código abierto que permite a los desarrolladores de Java EE 7 crear aplicaciones empresariales sencillas, fiables y escalables. Este marco se centra principalmente en proporcionar varias formas de ayudarlo a administrar sus objetos comerciales. Hizo que el desarrollo de aplicaciones web fuera mucho más fácil en comparación con los marcos Java clásicos y las interfaces de programación de aplicaciones (API), como la conectividad de base de datos Java (JDBC), JavaServer Pages (JSP) y Java Servlet. Este marco utiliza varias técnicas nuevas, como la programación orientada a aspectos (AOP), el objeto Java antiguo simple (POJO) y la inyección de dependencia (DI), para desarrollar aplicaciones empresariales. Ahora hablando de Spring Annotation.

Las anotaciones de Spring son una forma de metadatos que proporcionan datos sobre un programa. Las anotaciones se utilizan para proporcionar información complementaria sobre un programa. No tiene un efecto directo sobre el funcionamiento del código que anotan. No cambia la acción del programa compilado. 

Una de las anotaciones más importantes de Spring es @ComponentScan, que se usa junto con la anotación @Configuration para especificar los paquetes que queremos escanear. @ComponentScan sin argumentos le dice a Spring que escanee el paquete actual y todos sus subpaquetes. Entonces, comprendamos la anotación @ComponentScan con un proyecto de ejemplo.

Implementación: supongamos que ya tenemos un proyecto Java y todos los archivos Spring JAR se importan a ese proyecto. Ahora vamos a crear una clase simple llamada College y dentro de la clase, tenemos un método simple. 

A. Archivo: Universidad.java

Java

// Java Program to Illustrate College Class
 
package ComponentAnnotation;
 
// Class
public class College {
 
    // Method
    public void test()
    {
 
        // Print statement whenever this method of
        // College class is called
        System.out.println("Test College Method");
    }
}

Ahora vamos a crear un Bean para esta clase dentro del archivo beans.xml . A continuación se muestra el código para el archivo beans.xml .

B. Archivo: beans.xml

XML

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">
 
    <bean id="collegeBean" class="ComponentAnnotation.College"></bean>
</beans>

Pero no queremos crear el bean por este método. Queremos usar alguna anotación para hacer esta tarea. Entonces podemos usar la anotación @Component para hacer la misma tarea. Entonces podemos modificar nuestro archivo College.java algo como esto.

C. Archivo: Modificado College.java 

Java

// Java Program to Illustrate Component Annotation
// Indulgence in College Class
 
package ComponentAnnotation;
 
// Importing required classes
import org.springframework.stereotype.Component;
 
// Annotation
@Component("collegeBean")
 
// Class
public class College {
 
    // Method
    public void test()
    {
        // Print statement whenever this method is called
        System.out.println("Test College Method");
    }
}

Pero en este caso, tenemos que escribir la siguiente línea dentro del archivo beans.xml .

<context:component-scan base-package="ComponentAnnotation"/>

Nota: Pero no queremos usar el archivo beans.xml completo en nuestro proyecto. Entonces, ¿qué podemos hacer para reemplazar el archivo beans.xml ? En general, beans.xml es un archivo de configuración. Entonces, podemos crear una clase de configuración en Java y simplemente hacer que esta clase sea nuestra clase de configuración simplemente usando la anotación @Configuration . Sí, podemos hacer eso. Así que ahora vamos a crear otra clase llamada CollegeConfig. Una cosa más es que también tenemos que usar @ComponentScananotación porque necesitamos escanear todos nuestros componentes. En este paquete particular «ComponentAnnotation», independientemente de las clases presentes, la anotación @Component va a crear el bean para eso, y para hacerlo dentro de las clases de configuración, necesitamos definir nuestro paquete base como se muestra a continuación:

@ComponentScan(basePackages = "ComponentAnnotation")  

A continuación se muestra el código para el archivo CollegeConfig.java

D. Archivo: CollegeConfig.java 

Java

// Java Program to Illustrate Configuration of
// College Class
 
package ComponentAnnotation;
 
// Importing required classes
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
 
// Annotation
@Configuration
@ComponentScan(basePackages = "ComponentAnnotation")
 
// Class
public class CollegeConfig {
}

Ahora, para verificar nuestra aplicación, creemos un método principal dentro de nuestra clase Principal. A continuación se muestra el código del archivo Main.java . Se agregan comentarios dentro del código para comprender el código con más detalle.

E. Aplicación o archivo principal: Main.java

Ejemplo

Java

// Java Program to Illustrate Application Class
 
package ComponentAnnotation;
 
// Importing required classes
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
 
// Main class
public class Main {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Using AnnotationConfigApplicationContext
        // instead of ClassPathXmlApplicationContext
        // Because we are not using XML Configuration
        ApplicationContext context
            = new AnnotationConfigApplicationContext(
                CollegeConfig.class);
 
        // Get the bean and storing it in
        // a object of College class type
        College college
            = context.getBean("collegeBean", College.class);
 
        // Invoking the method
        // inside main() method
        college.test();
    }
}

Producción:

Test College Method 

Publicación traducida automáticamente

Artículo escrito por AmiyaRanjanRout y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *