Spring Boot (二)Spring Boot基本配置

本文深入探讨SpringBoot的各种配置方式,包括端口配置、XML配置、命令行参数配置、常规属性配置、类型安全配置、日志配置及Profile配置,助力开发者灵活掌握SpringBoot配置技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

你好,【程序职场】专注于:Spring Boot ,微服务 和 前端APP开发,闲暇之余一起聊聊职场规划,个人成长,还能带你一起探索 副业赚钱渠道,在提升技术的同时我们一起交流 敏捷流程 提高工作效率,从技术到管理一步步提升自我!
 
标签:一个执着的职场程序员!

正文来袭......

前言

(一). Spring Boot 的端口配置

(二). 使用XML配置

(三). 命令行参数配置

(四). 常规属性配置

(五). 类型安全的配置(基于properties)

(六). 日志配置

(七). Profile配置

 

 

(一). Spring Boot 的端口配置

Spring boot使用一个全局的配置文件,application.properties或者application.yml放置在src/main/resources目录或者类路径的/config下。

SpringBoot不仅支持常规的properties配置文件,还支持yaml语言的配置文件,yaml是以数据为中心的语言,在配置数据的时候具有面向对象的特征。

application.properties是比较常见的配置文件,SpringBoot的全局配置文件的作用是对一些默认配置的配置值进行修改。

下面我们以 默认端口和默认访问路径为例:我们将Tomcat的默认端口8080修改成8081,并将默认的访问路径 “/hello”修改为“/springboot/hello”
1. 在配置文件 application.properties 中添加配置信息

server.port=8081server.servlet.context-path=/springboot

2,或者在配置文件application.yml中添加

server:    port: 8081    contextPath: /springboot

上面说明了两种配置信息的添加,我们以第一种 application.properties 配置来讲解 调整后的运行结果如下:
 

 

(二). 使用XML配置

SpringBoot提倡零配置,就是说不要xml配置,但是在项目开发中,我们会遇到一些特殊要求下必须通过配置xml方式来实现,这样你不得不添加xml配置,我们可以通过Spring提供的@ImportResource来加载xml配置

实例如下:

@ImportResource({"classpath:some-context.xml","classpath:another-context.xml"})

(三). 命令行参数配置

SpringBoot可以是基于jar包和war包运行的,打成jar包的程序可以直接通过命令行运行:

java -jar xxx.jar

当然更方便的是可以通过命令行修改Tomcat的端口:

java -jar xxx.jar --server.port=8081

至此你的运行端口可以任由你来改动。

(四). 常规属性配置

在常规的Spring环境下,注入properties文件里的值的方式,通过@PropertySource指明properties文件的位置,然后通过@Value注入值,但是在SpringBoot中就简单多了,只需要我们在application.properties文件中定义属性,直接使用@Value注入就可以了。

1. application.properties 中添加属性

game.enterprise=腾讯game.name=斗地主game.taste=true

2. 在接口类中通过@Value直接注入

@Value("${game.enterprise}")private String gameEnterprise;@Value("${game.name}")private String gameName;@Value("${game.taste}")private String taste;

3. 修改接口调用函数 Test

@GetMapping(value = "/hello",produces = "text/plain;charset=UTF-8")  //RequestMapping ,GetMapping是一个用来处理请求地址映射的注解,可用于类或方法上    public String Test(){        return "SpringBoot 第一个项目,单独一个控制类中添加--游戏公司:"+gameEnterprise+"---游戏名称:"+gameName                +"---是否感兴趣:"+taste;    }

完整代码如下:

package org.cxzc.myyoung.springboot_2;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;// @RestController等于@Controller,@ResponseBody两个注解,注解为止在controller类上,相当于整个类中所有方法的返回值都为json字符串//如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器// InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。@RestControllerpublic class HelloController {    @Value("${game.enterprise}")    private String gameEnterprise;    @Value("${game.name}")    private String gameName;    @Value("${game.taste}")    private String taste;    @GetMapping(value = "/hello",produces = "text/plain;charset=UTF-8")  //RequestMapping ,GetMapping是一个用来处理请求地址映射的注解,可用于类或方法上    public String Test(){        return "SpringBoot 第一个项目,单独一个控制类中添加--游戏公司:"+gameEnterprise+"---游戏名称:"+gameName                +"---是否感兴趣:"+taste;    }}

4. 浏览器访问,获取注入信息

有些小伙伴在配置文件中添加的是中文,或者输出信息也是中文,这样就牵涉到两个地方的乱码问题

1, 输出信息乱码,我们在页面显示的时候需要中文说明,这样就会出现乱码问题,如下:

public String Test(){        return "SpringBoot 第一个项目,单独一个控制类中添加--游戏公司:"+gameEnterprise+"---游戏名称:"+gameName                +"---是否感兴趣:"+taste;    }

解决办法:
请求接口注解中添加字符格式

@GetMapping(value = "/hello",produces = "text/plain;charset=UTF-8")

 

2,application.properties配置文件中设置中文,浏览器访问出现乱码,如下

game.enterprise=腾讯game.name=斗地主game.taste=true

解决办法:在配置文件application.properties中添加属性

server.tomcat.uri-encoding=UTF-8spring.http.encoding.charset=UTF-8spring.http.encoding.enabled=truespring.http.encoding.force=truespring.messages.encoding=UTF-8

然后 在IntelliJ IDEA中依次点击File -> Settings -> Editor -> File Encodings

将Properties Files (*.properties)下的Default encoding for properties files设置为UTF-8,将Transparent native-to-ascii conversion前的勾选上。

如下图 :
 


到此常规属性配置 小伙伴们应该都会了,是不是很有成就感......

(五). 类型安全的配置(基于properties)

上面使用@Value注入每个配置在实际项目开发中肯定是非常麻烦的,毕竟我们的配置一般都是多个的,若使用上面的方式就需要我们使用@Value注入很多次。

当然这种情况SpringBoot也考虑到了,同时提供了基于类型安全的配置方式,通过@ConfigurationProperties  将preporties属性和一个Bean及其属性关联,来实现类型安全的配置。

实例如下:

1. 在src/main/resources文件夹下创建文件eat.properties 文件 ,添加属性值
 

 

2. 创建类型 安全的Bean,并注入properties文件中的值,代码如下:
 

package org.cxzc.myyoung.springboot_2;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.PropertySource;import org.springframework.stereotype.Component;/** * @Auther 追梦蜗牛 * @ABOUT  公众号  程序职场 * @CONTENT  描述信息 */@Component@ConfigurationProperties(prefix = "eat")@PropertySource("classpath:eat.properties")public class EatFood {    private String eatName;    private int eatprice;
    public String getEatName() {        return eatName;    }
    public void setEatName(String eatName) {        this.eatName = eatName;    }
    public int getEatprice() {        return eatprice;    }
    public void setEatprice(int eatprice) {        this.eatprice = eatprice;    }}

代码解释:
1. 通过@ConfigurationProperties(prefix = "eat") 加载properties文件内的配置,通过 prefix属性指定properties的配置的前缀,通过@PropertySource 指定文件的位置(1.4之前是通过 location指定properties的文件位置)

3. 在接口控制类中通过@Autowired注入该配置中的Bean

 @Autowired private EatFood eatFood;

4. 添加路径映射

@GetMapping(value = "/prope",produces = "text/plain;charset=UTF-8")    public String Test2(){        return "喜欢吃什么:"+eatFood.getEatName()+"---价格是多少:"+eatFood.getEatprice();    

代码如下:

package org.cxzc.myyoung.springboot_2;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;// @RestController等于@Controller,@ResponseBody两个注解,注解为止在controller类上,相当于整个类中所有方法的返回值都为json字符串//如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器// InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。@RestControllerpublic class HelloController {    @Autowired    private EatFood eatFood;
    @GetMapping(value = "/prope",produces = "text/plain;charset=UTF-8")    public String Test2(){        return "喜欢吃什么:"+eatFood.getEatName()+"---价格是多少:"+eatFood.getEatprice();    }}

5.运行结果

(六). 日志配置

SpringBoot 支持JavaUtil Logging,Log4j,Log4j2,和Logback作为日志框架,无论使用哪种日志框架,SpringBoot都为使用日志框架的控制台输出及其文件输出做好了配置。

默认情况下,SpringBoot使用LogBack作为日志框架。

1. 配置日志文件

logging.file=d:/log/log.log

2. 配置日志级别(格式:logging.level.包名=级别)

logging.level.org.springframework.web=debug

完整配置:

logging.file=d:/log/log.loglogging.level.org.springframework.web=debug

配置完日志配置后,启动项目,会在配置路径看到对应的日志文件。

(七). Profile配置

Profile是 SpringBoot 用来针对不同的环境对应不同的配置提供支持的,全局Profile配置使用application-{profile}.properties,例如:application-dev.properties

通过在application.properties中设置 spring.profiles.active=prod来指定使用哪个配置。

我们以开发环境和正式环境的配置为例:

1,在src/main/resources文件夹下定义不同环境下的Profile配置文件,文件名分别为application-pro.properties和application-dev.properties,这两个前者表示生产环境下的配置,后者表示开发环境下的配置,如下:

我们分别再两个不同的文件中添加,启动的端口,

1,application-pro.properties 下配置端口 为8082server.port=80822,application-dev.properties 下配置端口为8081server.port=8081

在application.properties 文件中进行配置 。

spring.profiles.active=dev

运行结果:

默认我们使用 dev的配置运行项目:

 

如果想换为生产环境,只需要把spring.profiles.active=dev改为spring.profiles.active=pro即可,这时候访问端口这是也变为8082了,如下:

本案例下载地址:

https://github.com/ProceduralZC/itcxzc/tree/master/springboot_2

好了,感兴趣的小伙伴关注我,一起讨论。

作者:小小蒲公英

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉默的闪客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值