0


SpringBoot2.0(Spring读取配置文件常用方法,打war包在Tomcat中启动)

目录

一,SpringBoot中读取配置文件的常用方法

1.1,使用@Value读取

在springBoot声明周期内,可以使用@Value注解从SpringBoot的默认配置文件中读取配置信息

例如在Controller中使用:
// 在配置文件中读取属性名为web.images-path对应的值@Value("${web.images-path}")privateString path;

@Value可以放到属性或方法上,能够正常使用的前提是所在类,必须在SpringBoot的生命周期内。
我们怎么把一个类放到Spring的生命周期中进行管理?使用的是@Component注解
因为@Controller和@Service本身就包含@Component。所以可以直接使用。

下面是单独使用@Component的例子

创建一个config包,然后创建一个BootProperties

packagecom.demo.config;importlombok.Setter;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.stereotype.Component;importorg.springframework.stereotype.Controller;@ComponentpublicclassBootProperties{@Value("${web.images-path}")publicString path;}

然后在controller中写

@RestControllerpublicclassHelloController{@AutowiredprivateBootProperties bootProperties;@RequestMapping("/test5")publicObjecttest5(){return bootProperties.path;}}

在这里插入图片描述

使用ing类型写
packagecom.demo.config;importlombok.Setter;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.stereotype.Component;importorg.springframework.stereotype.Controller;@ComponentpublicclassBootProperties{@Value("${web.images-path}")publicString path;@Value("${server.port}")publicint port;}
@RestControllerpublicclassHelloController{@AutowiredprivateBootProperties bootProperties;@RequestMapping("/test5")publicObjecttest5(){return bootProperties.path +" ------ "+ bootProperties.port;}}

在这里插入图片描述

1.2,使用@ConfigurationProperties

BootProperties类

packagecom.demo.config;importlombok.Setter;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.stereotype.Component;importorg.springframework.stereotype.Controller;@Setter// lombok,生成set方法@ConfigurationProperties(prefix ="server")// 配置属性类,并定制前缀@Component// 因为@ConfigurationProperties不能把此类放到boot容器中,所以要配合@Componpent使用publicclassBootProperties{@Value("${web.images-path}")publicString path;// 不使用@Value注解,需要保证:前缀+属性名=全路径。还需要此属性有对应的setter方法// @Value("${server.port}")publicint port;// 使用@Value注解则需要写全路径}

controller类

@RestControllerpublicclassHelloController{@AutowiredprivateBootProperties bootProperties;@RequestMapping("/test5")publicObjecttest5(){return bootProperties.path +" ------ "+ bootProperties.port;}}

在这里插入图片描述

1.3,使用Environment

Environment是SpringCore中的一个用于读取配置文件的类,将此类使用@Autowired注入到类中就可以使用它的getProperty方法来获取某个配置项的值

@RestControllerpublicclassHelloController{@AutowiredprivateEnvironment environment;@RequestMapping("/test7")publicObjecttest7(){return environment.getProperty("server.port");}}

在这里插入图片描述

1.4,自定义配置文件读取

使用之前的知识来理解下面的代码。
主要添加新的注解@PropertySource

创建一个config包,然后创建一个SysProperties

package com.demo.config;import lombok.Getter;import lombok.Setter;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.PropertySource;import org.springframework.stereotype.Component;

@ConfigurationProperties(prefix ="sys")
@Component
@PropertySource("classpath:sys.properties")
@Getter
@Setter
publicclassSysProperties{private String param1;private String param2;}

controller类

@RestControllerpublicclassHelloController{@AutowiredprivateSysProperties sysProperties;@RequestMapping("/test6")publicObjecttest6(){return sysProperties.getParam1()+sysProperties.getParam2();}}

在这里插入图片描述

二,SpringBoot部署war项目到tomcat9和启动原理

创建一个新项目

在这里插入图片描述
在添加个模块
在这里插入图片描述
然后在pom中添加依赖

<packaging>war</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.1.RELEASE</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><build><finalName>passerby-war</finalName><plugins><plugin><!-- 打包插件 --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

然后添加controller类和一个启动类
在这里插入图片描述
然后随便在Controller类里面加个方法

packagecom.demo.controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassController{@RequestMapping("/demo01")publicObjectdemo01(){return"hello,war";}}

开始打包
在这里插入图片描述
在文件夹中找到这个位置
在这里插入图片描述
找到后把刚打的war包复制下来
在这里插入图片描述
然后在到你Tomcat的位置
在这里插入图片描述
把war包复制到里面
在这里插入图片描述
然后打开bin目录
在这里插入图片描述
在里面找到startup.bat这个
在这里插入图片描述
打开等他运行完
在这里插入图片描述
然后在打开你刚才把war包粘贴的那个文件夹
在这里插入图片描述
现在就好了,打开浏览器试试

在这里插入图片描述

有什么不理解的可以私信!!!


本文转载自: https://blog.csdn.net/H20031011/article/details/132690815
版权归原作者 天秤座的码农 所有, 如有侵权,请联系我们删除。

“SpringBoot2.0(Spring读取配置文件常用方法,打war包在Tomcat中启动)”的评论:

还没有评论