14-springboot-自定义properties文件值注入javaBean中

被这个问题困扰了好几天....

在spring中, 从资源文件向bean中注入值非常简单, 只需要properties文件被spring加载, 然后在被spring管理的类写响应的属性, 然后 @Value("${SERVER_URL") 的方式就可以取到值了

在springboot中, 同样的方式也可以取到值, 但未免感觉有点low, 所以苦苦寻觅好几天,

在这儿以创建一个ESClient的方式进行说明:

1, 在App.java中加入注解

@EnableConfigurationProperties

我的类上有注解, @EnableAutoConfiguration, 所以没有加

2, 将  elasticsearch.properties  文件放置在 source/ES/下

3, 然后在需要注入的类上加入注解:

@Component
@ConfigurationProperties(prefix = "escluster.transport")
@PropertySource("classpath:ES/elasticsearch.properties")

因为 5.1.0 以后, 取消了ConfigurationProperties中location属性, 所以使用 PropertySource 进行了替代, 也正是这个注解需要步骤一种的注解

查了挺多博客才找到原因: http://www.jianshu.com/p/b71845c142d0, 为此还找了个vpn, 挺好用, 想要可以联系 [email protected]

4, 完整的ESClient类代码

package com.iwhere.easy.travel.tool;

import java.net.InetSocketAddress;

import org.elasticsearch.client.Client;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

/**
 * 获取esclient工具类
 *
 * @author wenbronk
 * @time 2017年4月5日 上午11:29:52 2017
 */
@Component
@ConfigurationProperties(prefix = "escluster.transport")
@PropertySource("classpath:ES/elasticsearch.properties")
public class ESClient {
    private Logger LOGGER = LoggerFactory.getLogger(ESClient.class);

    private String name;
    private String ip;
    private int port;

    private boolean sniff;
    private boolean ignore_cluster_name;
    private int ping_timeout;
    private int nodes_sampler_interval;

    /**
     * @return
     */
    @Bean(name = "client")
    public Client getEsClient() {
        Client client = null;
        Settings settings = Settings.builder().put("cluster.name", name)
                .put("client.transport.sniff", sniff)
                // .put("client.transport.ignore_cluster_name",
                // ESCLUSTER_IGNORE_NAME)
                // .put("client.transport.ping_timeout", ESCLUSTER_TIMEOUT)
                // .put("client.transport.nodes_sampler_interval",
                // ESCLUSTER_INTERVAL)
                .build();
        client = new PreBuiltTransportClient(settings).addTransportAddress(
                new InetSocketTransportAddress(new InetSocketAddress(ip, port)));
        LOGGER.info("transport client has created ");
        return client;
    }

    public Logger getLOGGER() {
        return LOGGER;
    }

    public void setLOGGER(Logger lOGGER) {
        LOGGER = lOGGER;
    }

    public String getName() {
        return name;
    }

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

    public String getIp() {
        return ip;
    }

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

    public int getPort() {
        return port;
    }

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

    public boolean isSniff() {
        return sniff;
    }

    public void setSniff(boolean sniff) {
        this.sniff = sniff;
    }

    public boolean isIgnore_cluster_name() {
        return ignore_cluster_name;
    }

    public void setIgnore_cluster_name(boolean ignore_cluster_name) {
        this.ignore_cluster_name = ignore_cluster_name;
    }

    public int getPing_timeout() {
        return ping_timeout;
    }

    public void setPing_timeout(int ping_timeout) {
        this.ping_timeout = ping_timeout;
    }

    public int getNodes_sampler_interval() {
        return nodes_sampler_interval;
    }

    public void setNodes_sampler_interval(int nodes_sampler_interval) {
        this.nodes_sampler_interval = nodes_sampler_interval;
    }
}

现在就完成了springboot从properties文件向bean中注值问题的解决

时间: 2024-11-05 22:13:15

14-springboot-自定义properties文件值注入javaBean中的相关文章

xls5-解析properties文件,在python中基本没有遇到

https://www.runoob.com/python3/python3-dictionary.html 要解析properties文件,在python中基本没有遇到这中情况,今天用python跑深度学习的时候,发现有些参数可以放在一个global.properties全局文件中,这样使用的时候更加方便.原理都是加载文件,然后用line方法进行解析判断”=”,自己从网上找到一个工具类,记录一下. 工具类 PropertiesUtiil.py# -*- coding:utf-8 -*-clas

3.springboot:springboot配置文件(配置文件、YAML、属性文件值注入<@Value、@ConfigurationProperties、@PropertySource,@ImportResource、@Bean>)

1.配置文件: springboot默认使用一个全局配置文件 配置文件名是固定的 配置文件有两种(开头均是application,主要是文件的后缀): ->application.properties ->application.yml 作用:修改springboot自动配置的默认值 springboot在底层把一切都自动配好 位置: 配置文件放在src/main/resourcr目录或者 类路径/config 下 2.YAML: YAML(YAML Ain't Markup Language

springboot中读取自定义properties文件

一.在高版本的springboot中,@ConfigurationProperties(prefix = "wisely2",locations = "classpath:wisely.properties")这个注解不支持了,所以我们要另辟蹊径 二.使用组合式注解: 1.自定义config.properties文件: 1 config.fileServer=/root/jzyp/staticserver/webapps/ROOT/server 2 config.s

尚硅谷springboot学习9-配置文件值注入

首先让我想到的是spring的依赖注入,这里我们可以将yaml或者properties配置文件中的值注入到java bean中 配置文件 person: lastName: hello age: 18 boss: false birth: 2017/12/12 maps: {k1: v1,k2: 12} lists: - lisi - zhaoliu dog: name: 小狗 age: 12 javaBean: package com.atguigu.springboot.bean; impo

161216、使用spring的DefaultResourceLoader自定义properties文件加载工具类

import java.io.IOException; import java.io.InputStream; import java.util.NoSuchElementException; import java.util.Properties; import org.apache.commons.io.IOUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.co

spring boot 读取自定义properties文件

@Configuration@Componentpublic class PropertiesConfig { private static final String[] properties = {"/application.properties"}; private static Properties props; private static Map<Object, Object> propertiesMap = new HashMap(); public Prope

ResourceBundle读取properties文件不在jar中的方法

ResourceBundle读取的文件是在classpath路径下,也就是src或者src目录下,而我们在项目中需要打包,打包后的properties文件在jar中,修改很不方便,我们需要把properties文件放在jar外随时可以修改. 1.一般情况下ResourceBundel读取文件方式默认的读取路径是classpath,配置文件名为resourceBundle.properties.在src根目录下为: ResourceBundle rb=ResourceBundle.getBundl

SpringBoot中自定义properties文件配置参数并带有输入提示

1. 创建配置类 在项目中创建一个参数映射类如下 @ConfigurationProperties(prefix = "user.info") public class MyProperties { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name= name; } public S

java web项目启动时自动加载自定义properties文件

首先创建一个类 public class ContextInitListener implements ServletContextListener 使得该类成为一个监听器.用于监听整个容器生命周期的,主要是初始化和销毁的. 类创建后要在web.xml配置文件中增加一个简单的监听器配置,即刚才我们定义的类. Xml代码 <listener> <!-- lang: xml --> <description>ServletContextListener</descri