搜索
首页Javajava教程Spring Boot配置文件的作用与细则是什么

    一.配置文件的作用

    配置文件是非常重要的,整个项目中所有的重要数据都是在配置文件中进行配置的例如:

    • 数据库的连接信息(用户名和密码的设置);

    • 项目启动的端口;

    • 第三方系统调用的秘钥信息;

    • 可以发现和定位问题的普通日志和异常日志等(日志的级别和持久化);

    如果没有配置文件的话,这些信息就无法进行配置了,数据库无法连接,日志无法查看等这些问题都是对于Spring Boot项目非常关键的,因此配置文件是特别重要的!

    二.配置文件的格式

    配置文件的分类一般是:

    • 系统的配置文件(系统定义好的),如连接字符串,日志的相关设置;

    • 用户自己定义的;

    而Spring Boot的配置文件主要有两种格式:

    • .properties

    • .yml

    Spring Boot配置文件的作用与细则是什么

    就是这样的两种格式,而且这里也一定要这么写,不然也是会报错的(约定大于配置),在这两个里面都是可以进行相关配置文件的设置的,两种格式只是不同时间的产物罢了,另外两种格式的写法也是不同的,这个下面会有相关的介绍,而且这两种格式也是可以并存的,如果两个都配置了,这里的配置会采用properties里面的配置,而忽略yml里面的配置,因此不建议同时使用两种格式再同一个项目中!

    三.properties配置文件的说明

    properties配置文件是更早期的配置文件格式,也是Spring Boot项目默认的配置文件,下面就具体介绍一下properties配置文件:

    1.properties基本语法

    在properties里面是以键值对为主的(key=value),类似于

    Spring Boot配置文件的作用与细则是什么

    这样的格式(中间不要写空格,也不要写多余的空格)

    如果是自定义的配置文件的话,也是key=value的形式,而这是需要自己写的,如果要读取这个文件也只能使用自己定义的key值来得到value值!

    2.读取配置文件

    同样也是使用注解就可以解决这个问题,这里使用@Value注解以及${}的格式就可以进行读取了:

    @Controller
    public class Test {
        @Value("${server.port}") //读取配置项
        private  String port;
        @ResponseBody  //返回一个非静态页面的数据
        @RequestMapping("/func")  //设置路由地址
        public String  func(){
            return "port: " + port;
        }
    }

    然后通过页面搜索http://localhost:8080/func就看有观察到读取到的端口号了:

    Spring Boot配置文件的作用与细则是什么

    而使用@Value是只能读取一个配置文件的话,如果想读取多个的话,需要多写几个@Value标签就可以了

    3.properties的缺点

    在properties里面是采用key=value的形式,而如果是同一key下的value,就需要把此key值重复来写,这就显得非常冗余了

    Spring Boot配置文件的作用与细则是什么

    而想要解决这个问题就需要使用yml配置文件了

    四.yml配置文件的说明

    yml是另一种格式的配置文件,yml 是⼀个可读性⾼,易于理解,⽤来表达数据序列化的格式,yml的语法和高级语言非常类似,而yml最大的优势是可以跨语言,像python,golang都可以使用yml作为配置⽂件。下面具体介绍一下yml配置文件:

    1.yml基本语法

    在yml里面的基本语法是:key: value,注意key和value之间需要英文冒号加空格,其中的空格也是不可省略的,类似

    Spring Boot配置文件的作用与细则是什么

    这样的语法再写上面的连接数据库配置的话,就方便很多了:

    Spring Boot配置文件的作用与细则是什么

    补充:yml中关于单、双引号的问题:yml中如果使用了双引号就会按照(原)语义执行,如果不加,或者加了单引号,那么默认就会将字符串中的特殊字符进行转义,比如\n -> \n(转义)处理。

    2.读取配置文件

    yml配置文件的读取方式也是和properties一样的,都是使用@Value注解加${}的格式,这里就不演示了,下面来看一下yml不一样的地方!

    3.配置对象

    在yml里面还是可以配置对象的:

    Spring Boot配置文件的作用与细则是什么

    另外也可以使用行内写法:

    Spring Boot配置文件的作用与细则是什么

    而想要读取到这个对象的话就不能再使用@Value注解了,这里需要借助@ConfigurationProperties来读取:

    import lombok.Data;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    @Data
    @ConfigurationProperties(prefix = "student") //读取配置文件的对象
    @Component
    public class Student {
        private int id;
        private String name;
        private int age;
    }

    然后读取对象,就可以直接进行注入了:

    @Controller
    public class Test {
        @Autowired
        private Student student;
        @ResponseBody
        @RequestMapping("/getstudent")
        public String getStudent(){
            return "student: " + student;
        }
    }

    然后通过浏览器搜索http://localhost:8080/getstudent就可以得到对象内容了:

    Spring Boot配置文件的作用与细则是什么

    4.配置集合

    在yml里面也是可以配置集合的:

    Spring Boot配置文件的作用与细则是什么

    同样行内写法也是可以的:

    Spring Boot配置文件的作用与细则是什么

    而要获取到集合的话,和获取对象是差不多的,也是通过@ConfigurationProperties来获取:

    import lombok.Data;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    import java.util.List;
    @Data
    @ConfigurationProperties(prefix = "dbtypes")
    @Component
    public class ListConfig {
        private List<String> name;
    }

    读取集合:

    @Controller
    public class Test {
        @Autowired
        private ListConfig listConfig;
        @ResponseBody
        @RequestMapping("/getlist")
        public String getList(){
            return "name:" + listConfig.getName();
        }
    }

    然后通过浏览器搜索http://localhost:8080/getlist就可以得到对象内容了:

    Spring Boot配置文件的作用与细则是什么

    五.properties和yml的区别

    • properties是以key=value的形式配置的键值对类型配置文件,而yml是以key: value的形式配置的键值对类型配置文件;

    • properties是早期且系统默认的配置文件格式,但配置存在一定的冗余数据,而yml可以更好的解决数据冗余问题;

    • yml通用性更好,支持多语言;

    • yml支持更多的数据类型;

    以上是Spring Boot配置文件的作用与细则是什么的详细内容。更多信息请关注PHP中文网其他相关文章!

    声明
    本文转载于:亿速云。如有侵权,请联系admin@php.cn删除
    如何将Maven或Gradle用于高级Java项目管理,构建自动化和依赖性解决方案?如何将Maven或Gradle用于高级Java项目管理,构建自动化和依赖性解决方案?Mar 17, 2025 pm 05:46 PM

    本文讨论了使用Maven和Gradle进行Java项目管理,构建自动化和依赖性解决方案,以比较其方法和优化策略。

    如何使用适当的版本控制和依赖项管理创建和使用自定义Java库(JAR文件)?如何使用适当的版本控制和依赖项管理创建和使用自定义Java库(JAR文件)?Mar 17, 2025 pm 05:45 PM

    本文使用Maven和Gradle之类的工具讨论了具有适当的版本控制和依赖关系管理的自定义Java库(JAR文件)的创建和使用。

    如何使用咖啡因或Guava Cache等库在Java应用程序中实现多层缓存?如何使用咖啡因或Guava Cache等库在Java应用程序中实现多层缓存?Mar 17, 2025 pm 05:44 PM

    本文讨论了使用咖啡因和Guava缓存在Java中实施多层缓存以提高应用程序性能。它涵盖设置,集成和绩效优势,以及配置和驱逐政策管理最佳PRA

    如何将JPA(Java持久性API)用于具有高级功能(例如缓存和懒惰加载)的对象相关映射?如何将JPA(Java持久性API)用于具有高级功能(例如缓存和懒惰加载)的对象相关映射?Mar 17, 2025 pm 05:43 PM

    本文讨论了使用JPA进行对象相关映射,并具有高级功能,例如缓存和懒惰加载。它涵盖了设置,实体映射和优化性能的最佳实践,同时突出潜在的陷阱。[159个字符]

    Java的类负载机制如何起作用,包括不同的类载荷及其委托模型?Java的类负载机制如何起作用,包括不同的类载荷及其委托模型?Mar 17, 2025 pm 05:35 PM

    Java的类上载涉及使用带有引导,扩展程序和应用程序类负载器的分层系统加载,链接和初始化类。父代授权模型确保首先加载核心类别,从而影响自定义类LOA

    如何将Java的RMI(远程方法调用)用于分布式计算?如何将Java的RMI(远程方法调用)用于分布式计算?Mar 11, 2025 pm 05:53 PM

    本文解释了用于构建分布式应用程序的Java的远程方法调用(RMI)。 它详细介绍了接口定义,实现,注册表设置和客户端调用,以解决网络问题和安全性等挑战。

    如何使用Java的插座API进行网络通信?如何使用Java的插座API进行网络通信?Mar 11, 2025 pm 05:53 PM

    本文详细介绍了用于网络通信的Java的套接字API,涵盖了客户服务器设置,数据处理和关键考虑因素,例如资源管理,错误处理和安全性。 它还探索了性能优化技术,我

    如何在Java中创建自定义网络协议?如何在Java中创建自定义网络协议?Mar 11, 2025 pm 05:52 PM

    本文详细介绍了创建自定义Java网络协议。 它涵盖协议定义(数据结构,框架,错误处理,版本控制),实现(使用插座),数据序列化和最佳实践(效率,安全性,维护

    See all articles

    热AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智能驱动的应用程序,用于创建逼真的裸体照片

    AI Clothes Remover

    AI Clothes Remover

    用于从照片中去除衣服的在线人工智能工具。

    Undress AI Tool

    Undress AI Tool

    免费脱衣服图片

    Clothoff.io

    Clothoff.io

    AI脱衣机

    AI Hentai Generator

    AI Hentai Generator

    免费生成ai无尽的。

    热门文章

    R.E.P.O.能量晶体解释及其做什么(黄色晶体)
    3 周前By尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.最佳图形设置
    3 周前By尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.如果您听不到任何人,如何修复音频
    3 周前By尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25:如何解锁Myrise中的所有内容
    3 周前By尊渡假赌尊渡假赌尊渡假赌

    热工具

    mPDF

    mPDF

    mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

    SublimeText3 Linux新版

    SublimeText3 Linux新版

    SublimeText3 Linux最新版

    Dreamweaver Mac版

    Dreamweaver Mac版

    视觉化网页开发工具

    SublimeText3 英文版

    SublimeText3 英文版

    推荐:为Win版本,支持代码提示!

    DVWA

    DVWA

    Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中