开发者

java配置文件取值的多种方式总结

开发者 https://www.devze.com 2023-11-19 11:07 出处:网络 作者: deelless
目录1.一般项目1.1demo结构如下1.2取值1.3js测试结果2.国际化项目2.1demo结构2.2取值2.3测试结果3.SpringBoot项目3.1demo结构3.2 取值3.3测试结果4.SpringBoot项目yml文件取值4.1demo结构4.2取值4.3测试结果总结1.一
目录
  • 1.一般项目
    • 1.1demo结构如下
    • 1.2取值
    • 1.3js测试结果
  • 2.国际化项目
    • 2.1demo结构
    • 2.2取值
    • 2.3测试结果
  • 3.SpringBoot项目
    • 3.1demo结构
    • 3.2 取值
    • 3.3测试结果
  • 4.SpringBoot项目yml文件取值
    • 4.1demo结构
    • 4.2取值
    • 4.3测试结果
  • 总结

    1.一般项目

    1.1demo结构如下

    java配置文件取值的多种方式总结

    1.2取值

    import Java.io.InputStream;
    import java.util.Properties;
    
    public class JavaConfigTest {
    	private static final String CONFIG_FILE= "config.properties";
    
    	//java jdk提供读取配置文件工具类
    	private static Properties props=new Properties();
    
    
    	public static void main(String[] args){
    		String value  = getConfigValue("aaa");
    
    		System.out.println("配置文件中的值是:"+value);
    	}
    
    	public static String getConfigValue(String key){
    		String value=null;
    		try {
    			InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(CONFIG_FILE);
    			if(in!=null){
    				props.load(in);
    				value = props.getProperty(key);
    				in.close();
    			}
    		}catch (Exception e){
    			e.printStackTrace();
    		}
    
    		return value;
    	}
    }
    

    1.3测试结果

    java配置文件取值的多种方式总结

    2.国际化项目

    2.1demo结构

    java配置文件取值的多种方式总结

    2.2取值

    import java.util.Locale;
    import java.util.ResourceBundle;
    
    public class I18NConfigTest {
    	public static void main(String[] args){
    		String value = GetI18nConfigValue("ccc");
    		System.out.println("国际化配置文件中的值是:"+value);
    	}
    
    	public static String GetI18nConfigValue(String key){
    		Locale currentLocale = new Locale("en","US");
    		ResourceBundle bundle = ResourceBundle.getBundle("messages_en", currentLocale);
    		String value = bundle.getString(key);
    		return value;
    	}
    }
    

    2.3测试结果

    java配置文件取值的多种方式总结

    3.SpringBoot项目

    3.1d编程客栈emo结构

    java配置文件取值的多种方式总结

    3.2 取值

    springboot项目基于动态代理创建bean,再依赖注入取值

    创建be编程客栈an

    package c编程om.example.demo.config;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    
    @Component    //动态代理
    public class SpringBootCongigTest {
    	//配置文件中的key
    	@Value("${sentinel}")
    	private String sentinel;
    	@Value("${aaa}")
    	private String aaa;
    
    	public String getSentinel() {
    		return sentinel;
    	}
    
    	public void setSentinel(String sentinel) {
    		this.sentinel = sentinel;
    	}
    
    	public String getAaa() {
    		return aaa;
    	}
    
    	public void setAaa(String aaa) {
    		this.aaa = aaa;
    	}
    }
    

    springboot单元测试注解需要的依赖:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    

    单元测试,依赖注入

    import com.example.demo.DemoApplication;
    import com.example.demo.config.SpringBootCongigTest;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    
    @RunWith(SpringRunner.class)
    @SpringBootTest(classes = DemoApplication.class)
    public class TestConfig {
    	@Autowired
    	private  SpringBootCongigTest springBootCongigTest;
    
    
    	@Test
    	public void testSpringBootConfig(){
    		String aaa = springBootCongigTest.getAaa();
    		String sentinel = springBootCongigTest.getSentinel();
    		System.out.println("配置文件输出的sentinel结果是:"+sentinel);
    		System.out.println("配置文件输出的aaa结果是:"+aaa);
    	}
    
    }
    

    3.3测试结果

    java配置文件取值的多种方式总结

    4.SpringBoot项目yml文件取值

    4.1demo结构

    java配置文件取值的多种方式总结

    4.2取值

    也是分两步,基于注解;动态代理,依赖注入

    动态代理:

    package com.example.demo.config;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    @Component
    @ConfigurationProperties(prefix = "Redis")
    public class SpringBootCongigTest {
    
    	private String sentinel;
    
    	private String aaa;
    
    	public String getSentinel() {
    		return sentinel;
    	}
    
    	public void setSentinel(String sentinel) {
    		this.sentinel = sentinel;
    	}
    
    	public String getAaa() {
    		return aaa;
    	}
    
    	public void setAaa(String aaa) {
    		this.aaa = aaa;
    	}
    }
    

    依赖注入

    import com.example.demo.DemoApplication;
    import com.example.demo.config.SpringBootCongigTest;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    
    @RunWith(SpringRunner.class)
    @SpringBootTest(classes = DemoApplication.class)
    public class TestConfig {
    	@Autowired
    	private  SpringBootCongigTest springBootCongigTest;
    
    
    	@Test
    	public void testSpringBootConfig(){
    		String aaa = springBootCongig编程客栈Test.getAaa();
    		String sentinel = springBootCongigTest.getSentinel();
    		System.out.println("配置文件输出的sentinel结果是:"+sentinel);
    		System.out.println("配置文件输出的aaa结果是:"+aaa);
    	}
    
    }
    

    4.3测试结果

    java配置文件取值的多种方式总结

    总结

    每个项目只写了一种方法,都是用法层面,没有涉及原理。这些方法都经过测试,拿过去是可以直接使用。从配置文件中取值的方法还有很多,在实现功能的基础上大家可以自己查查资料。

    以上就是java配置文件取值的多种方式总结的详细内容,更多关于java配置文件取值的资料请关注编程客栈(www.devze.com)其它相关文章!

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号