SpringBoot (Configuración 2)

1. @ PropertySource
@PropertySource: carga el archivo de configuración especificado [propiedades].
Anteriormente, cargamos el valor en el archivo de configuración global a javabean a través de @ConfifigurationProperties, pero no guardaremos todas las configuraciones utilizadas en la configuración global cuando lo usemos En el archivo, se pueden guardar diferentes configuraciones en diferentes archivos de configuración, luego necesitamos la anotación @PropertySource para cargar el archivo de configuración especificado para la clase javabean especificada.
Por ejemplo:

package com.lx.springboot.bean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "person")
@PropertySource(value = {"classpath:person.properties"})
public class PersonBean {
    private int perid;
    private String pername;
    private int perage;
    private String peraddress;

    public int getPerid() {
        return perid;
    }

    public void setPerid(int perid) {
        this.perid = perid;
    }

    public String getPername() {
        return pername;
    }

    public void setPername(String pername) {
        this.pername = pername;
    }

    public int getPerage() {
        return perage;
    }

    public void setPerage(int perage) {
        this.perage = perage;
    }

    public String getPeraddress() {
        return peraddress;
    }

    public void setPeraddress(String peraddress) {
        this.peraddress = peraddress;
    }
}
person.perid =1001
person.pername=zhangsan
person.perage=24
person.peraddress=上海
package com.lx.springboot.controller;
import com.lx.springboot.bean.PersonBean;
import com.lx.springboot.bean.StudentBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class TestController {
    @Autowired
    private StudentBean studentBean;
    @Autowired
    private PersonBean personBean;
    @RequestMapping(value = "/stuinfo")
    @ResponseBody
    public String getStudentInfo(){
        String stuinfo = studentBean.getStuid()+"\t"+
                studentBean.getStuname()+"\t"+
                studentBean.getStuage()+"\t"+
                studentBean.getStuaddress();
        return stuinfo;
    }
    @RequestMapping(value = "/perinfo")
    @ResponseBody
    public String getPersonInfo(){
        String stuinfo = personBean.getPerid()+"\t"+
                personBean.getPername()+"\t"+
                personBean.getPerage()+"\t"+
                personBean.getPeraddress();
        return stuinfo;
    }
}

2.
@ImportResource @ImportResource: Importe el archivo de configuración Spring basado en XML para que el contenido del archivo de configuración sea efectivo;

package com.lx.springboot.bean;
public class UserBean {
    private int userid;
    private String username;
    private int userage;
    private String useraddress;

    public int getUserid() {
        return userid;
    }

    public void setUserid(int userid) {
        this.userid = userid;
    }

    public String getUsername() {
        return username;
    }

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

    public int getUserage() {
        return userage;
    }

    public void setUserage(int userage) {
        this.userage = userage;
    }

    public String getUseraddress() {
        return useraddress;
    }

    public void setUseraddress(String useraddress) {
        this.useraddress = useraddress;
    }
}
package com.lx.springboot.controller;
import com.lx.springboot.bean.UserBean;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.annotation.Annotation;

public class TestController implements Controller {

    private UserBean userBean;

    public UserBean getUserBean() {
        return userBean;
    }

    public void setUserBean(UserBean userBean) {
        this.userBean = userBean;
    }

    

    @Override
    public String value() {
        return null;
    }

    @Override
    public Class<? extends Annotation> annotationType() {
        return null;
    }
}

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="userBean" class="com.lx.springboot.bean.UserBean">
        <property name="userid" value="1003"></property>
        <property name="username" value="wangwu"></property>
        <property name="userage" value="25"></property>
        <property name="useraddress" value="北京"></property>
    </bean>
    <bean  name="/test" class="com.lx.springboot.controller.TestController">
       <property name="userBean" ref="userBean"></property>
    </bean>
</beans>

No hay un archivo de configuración de Spring en Spring Boot, y el archivo de configuración que escribimos nosotros mismos no puede ser reconocido automáticamente;
queremos que el archivo de configuración de Spring entre en vigencia y lo cargue; @ImportResource está anotado en una clase principal.
3.
@Bean @ Bean se agrega al método Arriba, dile al contenedor springIOC que cree un objeto de clase javabean
. El valor de retorno del
método es el objeto de clase javabean que se creará . El nombre del método es el nombre del objeto de clase javabean.

Nota: @Bean debe aparecer en la clase de configuración [clase java marcada con @Configuration]
Por ejemplo:

package com.lx.springboot.bean;

public class HelloService {
    public   void   getHelloServiceInfo(){
        System.out.println("HelloService类的测试方法");
    }
}

package com.lx.springboot.configuration;
import com.lx.springboot.bean.HelloService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
//@Configuration注解标注某一个类为配置类
//代替基于XML的Spring配置文件
@Configuration
public class MyAppConfig {
    //@Bean添加在方法上,告诉springIOC容器创建javabean类对象
    //方法的返回值就是所要创建javabean类对象
    //方法的名称就是javabean类对象的名称
    //<bean id="对象的名称"  class="所要创建javabean类对象"></bean>
    @Bean
    public HelloService getHelloService(){
        return  new HelloService();
    }
}
package com.lx.springboot.controller;
import com.lx.springboot.bean.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

@Controller
public class TestController {
    @Resource
    private HelloService getHelloService;
    @RequestMapping(value = "testinfo")
    @ResponseBody
    public  String  testinfo(){
        getHelloService.getHelloServiceInfo();
        return "测试@Bean";
    }
}

package com.lx.springboot.sptingboot7;

import com.lx.springboot.configuration.MyAppConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Import;

@SpringBootApplication
@ComponentScan(basePackages = "com.lx.springboot.controller")
@Import(MyAppConfig.class)
public class Sptingboot7Application {
    public static void main(String[] args) {
        SpringApplication.run(Sptingboot7Application.class, args);
    }
}

Inserte la descripción de la imagen aquí

Marcadores de posición en el archivo de configuración [application.properties]
1, número
aleatorio random. Value, {random.value},r a n d o m . v a l u e {random.int} 、 $ {random.long}
aleatorio. int (10) 、 {random.int (10)} 、r a n d o m . i n t ( 1 0 ) , {random.int [1024,65536]}
Por ejemplo:

package com.lx.springboot.bean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

@Component
@onfigurationProperties(prefix = "student")
public class StudentBean {
    private  int  stuid;
    private  String stuname;
    private  int stuage;
    private  String  stuaddress;

    public int getStuid() {
        return stuid;
    }

    public void setStuid(int stuid) {
        this.stuid = stuid;
    }

    public String getStuname() {
        return stuname;
    }

    public void setStuname(String stuname) {
        this.stuname = stuname;
    }

    public int getStuage() {
        return stuage;
    }

    public void setStuage(int stuage) {
        this.stuage = stuage;
    }

    public String getStuaddress() {
        return stuaddress;
    }

    public void setStuaddress(String stuaddress) {
        this.stuaddress = stuaddress;
    }
}

package com.lx.springboot.controller;

import com.lx.springboot.bean.StudentBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {
    @Autowired
    private StudentBean studentBean;
    @RequestMapping(value = "/test")
    @ResponseBody
    public String testStudent(){
        System.out.println(studentBean.getStuid());
        System.out.println(studentBean.getStuname());
        System.out.println(studentBean.getStuage());
        System.out.println(studentBean.getStuaddress());
        return "";
    }
}

student.stuid=${
    
    random.int}
student.stuname=zhangsan
student.stuage=${
    
    random.int[1024,65536]}
student.stuaddress=${
    
    student.stuname}_\u5730\u5740

Inserte la descripción de la imagen aquí

Perfiles
1. Los archivos de perfil se utilizan para configurar los datos de configuración en diferentes entornos.
2. Debido a que los datos del entorno operativo configurados en el archivo de configuración son diferentes en diferentes entornos, necesitamos cambiar de manera flexible a los datos del entorno operativo correspondiente en diferentes entornos operativos. En este momento, utilizaremos diferentes entornos operativos. los datos se configuran en diferentes archivos de configuración y el cambio se completa a través de la propiedad spring.profiles.active en el archivo de configuración principal application.properties.
Test.properties configuración
application-dev.properties [configuración del entorno de desarrollo]
server.port = 8080
application-prod.properties [configuración del entorno de producción]
server.port = 9090
application.properties [configuración principal]
spring.profiles.active = prod [especificar Utilice la configuración del entorno de producción]
http: // localhost: 9090 / testInfo
o
spring.profiles.active = dev [Especifique para utilizar la configuración del entorno de desarrollo]
http: // localhost: 8080 / testInfo

Configuración de test.yml
application-devyml.yml [configuración del entorno de desarrollo]

server: 
port: 8080

Inserte la descripción de la imagen aquí

application-prodyml.yml 【Configuración del entorno de producción】

server: 
port: 9090

Inserte la descripción de la imagen aquí

application.yml [Configuración principal]
spring:
profiles:
active: prodyml [Especificar para utilizar la configuración del entorno de producción]
http: // localhost: 9090 / testInfo
o
spring:
profiles:
active: devyml [Especificar para utilizar la configuración del entorno de desarrollo]
http: / / localhost: 8080 / testInfo Lo
anterior es para cambiar la configuración del entorno operativo en 1. El archivo de configuración principal.
También puede especificar qué entorno operativo utilizar mediante la configuración de la 2. ventana de vista de configuración de parámetros del entorno operativo
"--spring.profiles. active = dev "

También puede especificar qué entorno operativo usar al ejecutar el jar a través de la línea de 3. comandos
java -jar testspringboot002-0.0.1-SNAPSHOT.jar --spring.profiles.active = dev;
también puede especificar mediante 4. Configurar virtual parámetros de la máquina Qué entorno operativo utilizar;
"-Dspring.profiles.active = dev"

Nota: El nombre del archivo de configuración del entorno en ejecución es application- {profiles} .properties / yml La
ubicación de carga del archivo de configuración principal
Spring boot startup escaneará el archivo application.properties o application.yml en la siguiente ubicación como el archivo de configuración predeterminado para Spring boot
-directorio raíz del proyecto / config /
- directorio raíz del proyecto /
- recurso / config /
- recurso: / Lo
anterior está en el orden de prioridad de mayor a menor, se cargarán los archivos en todas las ubicaciones y el contenido de configuración de alta prioridad anulará el contenido de configuración de baja prioridad.
SpringBoot cargará el archivo de configuración principal desde estas cuatro ubicaciones; configuración complementaria
También podemos cambiar la configuración predeterminada configurando spring.config.location.
Después de empaquetar el proyecto, podemos usar los parámetros de la línea de comando para especificar la configuración al iniciar el proyecto. nueva ubicación del archivo; el archivo de configuración especificado y los archivos de configuración cargados por defecto trabajan juntos para formar una configuración complementaria;
java -jar testspringboot02-0.0.1-SNAPSHOT.jar --spring.confifig.location = F: / application. propiedades
configuración externa Secuencia de carga
Spring Boot admite múltiples métodos de configuración externa

  1. Parámetros de línea de comando
  2. Atributos JNDI de java: comp / env
  3. Propiedades del sistema Java (System.getProperties ())
  4. Variables de entorno del sistema operativo
  5. Valor de propiedad aleatorio. * Configurado por RandomValuePropertySource
  6. Application- {profile} .properties o application.yml (con spring.profile) archivo de configuración fuera del paquete jar
  7. Application- {profile} .properties o application.yml (con spring.profile) archivo de configuración dentro del paquete jar
  8. Application.properties o application.yml (sin spring.profile) archivo de configuración fuera del paquete jar
  9. El archivo de configuración application.properties o application.yml (sin spring.profile) en el paquete jar se
    carga primero con profifile, y luego se carga sin profifile, y el paquete jar se busca fuera del paquete jar
  10. @PropertySource en la clase anotada @Configuration
  11. Las propiedades predeterminadas especificadas por SpringApplication.setDefaultProperties

Supongo que te gusta

Origin blog.csdn.net/guoguo0717/article/details/110916504
Recomendado
Clasificación