Spring Boot (二)Spring Boot基本配置

你好,欢迎来到 【程序职场】 ,这里有你需要的技术提升,职场规划,个人成长,副业发展 等文章。

我们一起学习,一起进步。

正文来袭......

前言

(一). 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

好了,感兴趣的小伙伴关注公众号,加群讨论。

作者:小小蒲公英
公众号:程序职场
微信:mmlz6879
简介:专注于 Spring Boot ,微服务,前端APP,副业赚钱,职场规划,运营管理,个人成长 等,关注后回复   学习资料 ,领取为你精心准备的学习干货!
一个执着的职场程序员
资料: 可以在公众号后台回复 “学习资料”  获得技能提升的干货资料。

发布了55 篇原创文章 · 获赞 101 · 访问量 34万+

猜你喜欢

转载自blog.csdn.net/jianpengxuexikaifa/article/details/103654629