Primavera @Value

@Inyección de valor

El caso de no pasar las propiedades inyectadas del archivo de configuración

Inyecte dinámicamente valores externos en el Bean a través de @Value, los casos de uso son los siguientes:

Inyecte cadenas ordinarias,
inyecte propiedades del sistema operativo,
inyecte resultados de expresión,
inyecte otras propiedades de bean: inyecte las propiedades de beanInject objetos, otro
inyecte recursos de archivos e
inyecte recursos de URL

Ver el código detallado:

@Value("normal")
    private String normal; // 注入普通字符串

    @Value("#{systemProperties['os.name']}")
    private String systemPropertiesName; // 注入操作系统属性

    @Value("#{ T(java.lang.Math).random() * 100.0 }")
    private double randomNumber; //注入表达式结果

    @Value("#{beanInject.another}")
    private String fromAnotherBean; // 注入其他Bean属性:注入beanInject对象的属性another,类具体定义见下面

    @Value("classpath:com/hry/spring/configinject/config.txt")
    private Resource resourceFile; // 注入文件资源

    @Value("http://www.baidu.com")
    private Resource testUrl; // 注入URL资源

Inyectar otras propiedades del bean: inyectar las propiedades del objeto beanInject otro

@Component
public class BeanInject {
    @Value("其他Bean的属性")
    private String another;

    public String getAnother() {
        return another;
    }

    public void setAnother(String another) {
        this.another = another;
    }
}

Inyectar propiedades a través del archivo de configuración

El valor del archivo de configuración externo se inyecta dinámicamente en el Bean a través de @Value. Hay dos tipos principales de archivos de configuración:

  • application.properties. application.properties carga este archivo por defecto cuando se inicia Spring Boot
  • Archivo de propiedades personalizadas. El archivo de propiedades personalizadas se carga a través de @PropertySource. @PropertySource puede cargar varios archivos al mismo tiempo o un solo archivo. Si existe la misma clave en el mismo primer archivo de propiedades y en el segundo archivo de propiedades, se activa la clave del último archivo de propiedades. La ruta del archivo cargado también se puede configurar con variables, de la siguiente manera: $ {anotherfile.configinject}, este valor se define en el primer archivo de propiedades config.properties
    El contenido del primer archivo de propiedades config.properties es el siguiente:
    $ {anotherfile.configinject} como el segundo Valor variable de la ruta de carga de un archivo de propiedad
book.name=bookName
anotherfile.configinject=placeholder

El contenido del segundo archivo de propiedades config_placeholder.properties es el siguiente:

book.name.placeholder=bookNamePlaceholder

Lo siguiente usa la gramática @Value ("$ {app.name}") para inyectar el valor del archivo de propiedades en el valor de la propiedad del bean. Vea el código detallado:

@Component
// 引入外部配置文件组:${app.configinject}的值来自config.properties。
// 如果相同
@PropertySource({"classpath:com/hry/spring/configinject/config.properties",
    "classpath:com/hry/spring/configinject/config_${anotherfile.configinject}.properties"})
public class ConfigurationFileInject{
    @Value("${app.name}")
    private String appName; // 这里的值来自application.properties,spring boot启动时默认加载此文件

    @Value("${book.name}")
    private String bookName; // 注入第一个配置外部文件属性

    @Value("${book.name.placeholder}")
    private String bookNamePlaceholder; // 注入第二个配置外部文件属性

    @Autowired
    private Environment env;  // 注入环境变量对象,存储注入的属性值

    public String toString(){
        StringBuilder sb = new StringBuilder();
        sb.append("bookName=").append(bookName).append("\r\n")
        .append("bookNamePlaceholder=").append(bookNamePlaceholder).append("\r\n")
        .append("appName=").append(appName).append("\r\n")
        .append("env=").append(env).append("\r\n")
        // 从eniroment中获取属性值
        .append("env=").append(env.getProperty("book.name.placeholder")).append("\r\n");
        return sb.toString();
    }   
}

Fuente: https://blog.csdn.net/hry2015/article/details/72353994

Supongo que te gusta

Origin blog.csdn.net/qianzhitu/article/details/107655407
Recomendado
Clasificación