Configuración central y anotaciones de SpringBoot

Tabla de contenido

1. Notas

anotación meta

Anotación básica

empezar a comentar

dos, configuración

introducción al formato

Leer información del archivo de configuración

Demostración de caso 1

 Información de bean de lectura anidada

Demostración de caso 2

 Leer datos de configuración de tipo mapa, lista y matriz

Demostración de caso 3

 3. Resumen


1. Notas

        Antes de aprender sobre los conceptos básicos de SpringBoot y la aplicación simple de AOP, este número hablará sobre la configuración central y las anotaciones de SpringBoot. 

        Las anotaciones de SpringBoot son la capacidad de etiquetar el código. Mediante la introducción de anotaciones, podemos dar vida al código de manera simple y rápida, mejorando en gran medida la legibilidad y la escalabilidad del código. La anotación en sí no tiene ninguna capacidad, es solo una etiqueta, pero podemos definir varias etiquetas e implementar varios procesadores de etiquetas para extender funciones, habilitar funciones, definir atributos, definir comportamientos y definir reglas para clases, métodos, atributos e incluso parámetros. , procesamiento de asociaciones, definiciones de metadatos y más.

anotación meta

@Documentado : la anotación se incluirá en el documento javadoc del elemento anotado por esta anotación. Generalmente, no hay daño en marcar esta anotación

@Objetivo

        Los elementos de destino a los que se pueden aplicar anotaciones, como clases, métodos, atributos, parámetros, etc., deben considerarse cuidadosamente.

@Retención

        Solo conserve el código fuente, consérvelo hasta el código de bytes compilado o cárguelo en tiempo de ejecución, más del 90% de las aplicaciones analizarán las anotaciones para procesamiento adicional en tiempo de ejecución, por lo que en la mayoría de los casos estableceremos la configuración en RetentionPolicy .RUNTIME

@Heredado

        Si la subclase no define anotaciones, puede obtener automáticamente anotaciones que definen los atributos de herencia de la clase principal. Por ejemplo, @Service de Spring no tiene características de herencia, pero @Transactional tiene características de herencia. Las anotaciones de Spring se utilizan en el sistema de herencia OO. Por favor preste especial atención a este punto. Se da por sentado que las anotaciones pueden ser heredadas por subclases, lo que puede causar errores innecesarios. Debe considerar cuidadosamente si habilitar la herencia

@repetible

        La característica introducida por Java 8 define anotaciones repetibles a través de contenedores de anotaciones asociados. Un poco de azúcar sintáctico mejora la legibilidad del código. En realidad, es muy común tener múltiples anotaciones repetidas para elementos. Por ejemplo, un rol puede acceder a un método o puede ser accedido por el rol B. Cierto método debe ejecutarse como una tarea programada, y debe ejecutarse tanto en la condición A como en la condición B.

@Nativo

        Ya sea para generar campos marcados en el archivo de encabezado .h, a menos que los programas nativos necesiten interactuar con los programas Java, esta meta-anotación rara vez se usa

Anotación básica

@Service : anotado en la clase, lo que indica que se trata de un bean de capa empresarial

@Controller : anotado en la clase, lo que indica que se trata de un bean de capa de control

@Repository : anotado en la clase, lo que indica que se trata de un bean de capa de acceso a datos

@Component : Anotado en la clase, lo que indica un bean general, si el valor no está escrito, el valor predeterminado es la primera letra del nombre de la clase en minúsculas

@Autowired : Inyectar por tipo. Atributo predeterminado requerido = tru

@Resource: ensamblado por nombre.

empezar a comentar

 Aplicación SpringBoot

Incluya las siguientes tres anotaciones:

 @SpringBootConfiguration

          @Configuration: la función de JavaConfig, la clase de configuración, combinada con @Bean puede inyectar objetos en el contenedor Spring IOC. La clase anotada con @SpringBootConfiguration es una clase de configuración.

@EnableAutoConfiguration

         Activa la configuración automática. Cree los objetos en bibliotecas Spring y de terceros, inyéctelos en el contenedor Spring para evitar escribir xml y elimine el código de muestra. Objetos a utilizar, proporcionados por el framework.

 @ComponentScan 

         Escáner de componentes, <context:component-scan base-package="xxx package"/> escanea @Controller, @Service, @Repository, @Component anotaciones, crea sus objetos y los inyecta en el contenedor

La convención springboot: la clase de inicio, como la raíz (punto de partida) del paquete de escaneo


dos, configuración

introducción al formato

Los archivos de configuración tienen dos formatos : propiedades y   yaml ( yml ).

        properties es un formato de archivo de configuración de uso común en Java, y la extensión del archivo es properties.

El formato de sintaxis es: clave=valor. Las llaves son únicas.

        yaml (Yet Another Markup Language), es un formato de datos para archivos de configuración, y la extensión del archivo es yaml o yml (comúnmente utilizado)

El formato de sintaxis es: clave:[espacio] valor.


Reglas básicas de sintaxis de YAML:

 Sensible a mayúsculas y minúsculas

 Usar sangría para representar relaciones jerárquicas

 Solo se pueden usar espacios para sangría, no se permiten teclas de tabulación

 El número de espacios para la sangría no es importante, siempre que los elementos en el mismo nivel estén alineados a la izquierda

 El carácter # representa un comentario y solo admite comentarios de una sola línea. # poner el primer carácter de la línea de comentario

La sangría YAML debe usar espacios y distingue entre mayúsculas y minúsculas. Se recomienda usar solo minúsculas y espacios al escribir archivos YAML.

YAML admite tres estructuras de datos

 Objeto: una colección de pares clave-valor, también conocida como mapeo (mapping) / hash (hashes) / dictionary (diccionario)

 Array: conjunto de valores dispuestos en orden, también conocido como secuencia (secuencia)/list (lista)

 Escalares: valores únicos e indivisibles, como números, cadenas, verdadero|falso, etc.

Ruta de almacenamiento: directorio src/main/resource o /config de la ruta de clase

Leer información del archivo de configuración

        Spring Boot admite archivos de configuración en  formatos de propiedades y yml   . El nombre del archivo de configuración es  aplicación  por defecto . Podemos usar application.properties  ,  application.yml .

Lea el valor de la clave del archivo de configuración e inyecte la propiedad del Bean con @Value, y @Value inyecta el valor de una clave a la vez.

La vinculación de múltiples valores clave a múltiples propiedades de Bean puede cooperar con la anotación ConfigurationProperties. 

El acceso a las propiedades en el código también puede usar el objeto abstracto Entorno para la configuración externalizada. Use Environment para inyectar este objeto y llamar a su método getProperty(String key).

Demostración de caso 1

        Requisitos : proporcione el nombre de la aplicación, el propietario y la información básica del puerto en application.properties, y el programa leerá estos datos y se los mostrará al usuario.

        Paso 1: Cree un nuevo proyecto maven sin agregar dependencias

        Paso 2: personalice los elementos de configuración en application.properties

        Paso 3: Cree la clase SomeService para leer las claves de configuración app.name, app.owner, app.port.       

        La anotación @Value lee un solo valor, sintaxis ${clave: valor predeterminado}

     

@Service
public class SomeService {
    @Value("${app.name}")
    private String name;

    @Value("${app.owner}")
    private String owner;

    @Value("${app.port:8088}")
    private Integer prot;

    public void printValue(){
        //链接字符串
        StringJoiner joiner = new StringJoiner(";");
        joiner.add(name).add(owner).add(String.valueOf(prot));

        //打印出字符串
        String result = joiner.toString();
        System.out.println("result= "+ result);
    }

         Paso 4: Pruebas unitarias

        Cree una clase de prueba en el directorio de prueba, inyecte el objeto SomeService y llame a su método printValue().


 Información de bean de lectura anidada

Demostración de caso 2

        Requisitos: el Bean contiene otros Beans como atributos, y los elementos de configuración en el archivo de configuración están vinculados al Bean y los miembros del tipo de referencia. La definición de frijol no tiene requisitos especiales.

        Paso 1: cree un nuevo archivo con un sufijo .yml en la carpeta de recursos y agregue dependencias

       Agregue las siguientes dependencias al archivo pom.xml  

<dependencia> 
    <groupId>org.projectlombok</groupId> 
    <artifactId>lombok</artifactId> 
    <opcional>verdadero</opcional> 
</dependency> 

<dependencia> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId >spring-boot-configuration-processor</artifactId> 
    <opcional>verdadero</opcional> 
</dependencia>

Paso 2: cree un nuevo paquete pk02 y cree dos clases

//DoubBean 
@Configuration(proxyBeanMethods = false)
@ConfigurationProperties(prefix = "app1")
@Service
public class DoubBean {
    private String name;
    private String owner;

    private Integer port;
    private Seri ser;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getOwner() {
        return owner;
    }

    public void setOwner(String owner) {
        this.owner = owner;
    }

    public Integer getPort() {
        return port;
    }

    public void setPort(Integer port) {
        this.port = port;
    }


    public Seri getSer() {
        return ser;
    }

    public void setSer(Seri ser) {
        this.ser = ser;
    }

    @Override
    public String toString(){
        return "DoubBean{ \n"+
                "网站名="+name+"\n" +
                ",浏览器cookic="+owner+"\n" +
                ",端口="+port+"\n" +
                "用户信息:"+ser+
                "}";
    }
// Seri 
public class Seri {
    private String username;
    private String userpass;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getUserpass() {
        return userpass;
    }

    public void setUserpass(String userpass) {
        this.userpass = userpass;
    }

    @Override
    public String toString(){
        return "用户名:" + username +"  用户密码:" + userpass;
    }
    
}

         Paso 3: agregue el paquete de escaneo y el método de prueba de la unidad

Asegúrese de agregar anotaciones de escaneo a la clase de inicio primero y configure el paquete escaneado


 Leer datos de configuración de tipo mapa, lista y matriz

Demostración de caso 3

Map, List y Array pueden proporcionar datos de configuración, lo siguiente demuestra el proceso a través de una configuración de ejemplo:

        Paso 1: escriba diferentes tipos de datos en el archivo application.yml ahora mismo

        Paso 2: agregue el paquete pk3 y cree los siguientes archivos de clase

//Users 
public class Users {
    private String name;
    private String sex;
    private Integer age;
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString(){
        return "MyServer{ " +
                "name: " + name +"\n"+
                "sex: " + sex +"\n" +
                "age= "+age+"  }"+"\n";


    }
}
//ConutClass 
@Data
@ConfigurationProperties
public class ConutClass {
    private List<Servers> servers;
    private Map<String,Users> users;

    private String [] names;

    @Override
    public String toString(){
        return "ConutClass{ \n"+
                "网站服务器:"+"\n"+servers+"\n" +
                "用户信息列表:"+"\n"+users+"\n" +
                "名字列:"+"\n"+names+"\n" +
                "}";
    }
}
//Servers 
public class Servers {
    private String title;
    private String ip;
    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getIp() {
        return ip;
    }

    public void setIp(String ip) {
        this.ip = ip;
    }

    @Override
    public String toString(){
        return "MyServer{ " +
                "title: " + title +"\n"+
                "ip: " + ip + "  }"+"\n";
        
    }
}

        Paso 4: Agregue el paquete de escaneo y la unidad de prueba

La anotación @ConfigurationPropertiesScan solo se puede agregar una vez, por lo que se pueden almacenar varios paquetes de escaneo entre llaves y separados por comas.

 3. Resumen

En este artículo, nos enfocamos en anotaciones comunes y lectura y prueba de beans.

        Spring Boot utiliza  application.properties application.yml archivos para gestionar la configuración de la aplicación

   @SpringBootApplicationLa anotación se usa para iniciar la clase de inicio de la aplicación Spring Boot, que combina las funciones de @Configuration, @EnableAutoConfigurationy @ComponentScan. @RestControllerLas anotaciones marcan una clase como controlador para una API RESTful y @RequestMappinglas anotaciones se utilizan para asignar solicitudes HTTP a métodos de controlador.

        Además, anotaciones para inyección de dependencia @Autowired, que puede inyectar dependencias automáticamente. La última es @Beanla anotación, que puede registrar la instancia devuelta por el método como un bean y agregarla al contexto de la aplicación de Spring.

Este es el final del contenido de este artículo. Si tiene buenas sugerencias e insuficiencias, le invitamos a que le guste y reenvíe en el área de comentarios.

Supongo que te gusta

Origin blog.csdn.net/qq_51294997/article/details/132112903
Recomendado
Clasificación