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

2023-11-08

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

1.1,使用@Value读取

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

例如在Controller中使用:

    // 在配置文件中读取属性名为web.images-path对应的值
    @Value("${web.images-path}")
    private String path;

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

下面是单独使用@Component的例子
创建一个config包,然后创建一个BootProperties

package com.demo.config;

import lombok.Setter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;


@Component
public class BootProperties {

    @Value("${web.images-path}")
    public String path;
}

然后在controller中写

@RestController
public class HelloController {

    @Autowired
    private BootProperties bootProperties;
	
    @RequestMapping("/test5")
    public Object test5(){
        return bootProperties.path;
    }
	
}

在这里插入图片描述
使用ing类型写

package com.demo.config;

import lombok.Setter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;


@Component
public class BootProperties {

    @Value("${web.images-path}")
    public String path;

	@Value("${server.port}")
    public int port;
}
@RestController
public class HelloController {

    @Autowired
    private BootProperties bootProperties;
	
    @RequestMapping("/test5")
    public Object test5(){
    	return bootProperties.path +  " ------ "+ bootProperties.port;
    }
	
}

在这里插入图片描述

1.2,使用@ConfigurationProperties

BootProperties类

package com.demo.config;

import lombok.Setter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;

@Setter  // lombok,生成set方法
@ConfigurationProperties(prefix = "server") // 配置属性类,并定制前缀
@Component  // 因为@ConfigurationProperties不能把此类放到boot容器中,所以要配合@Componpent使用
public class BootProperties {

    @Value("${web.images-path}")
    public String path;

    // 不使用@Value注解,需要保证:前缀+属性名=全路径。还需要此属性有对应的setter方法
    // @Value("${server.port}")
    public int port;


    // 使用@Value注解则需要写全路径
}

controller类

@RestController
public class HelloController {

    @Autowired
    private BootProperties bootProperties;
	
    @RequestMapping("/test5")
    public Object test5(){
    	return bootProperties.path +  " ------ "+ bootProperties.port;
    }
	
}

在这里插入图片描述

1.3,使用Environment

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

@RestController
public class HelloController {

    @Autowired
    private Environment environment;
	
   	@RequestMapping("/test7")
    public Object test7(){
        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
public class SysProperties {

    private String param1;
    private String param2;
}

controller类

@RestController
public class HelloController {

    @Autowired
    private SysProperties sysProperties;
	
    @RequestMapping("/test6")
    public Object test6(){
        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类里面加个方法

package com.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class Controller {

    @RequestMapping("/demo01")
    public Object demo01(){
        return "hello,war";
    }
}

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

在这里插入图片描述

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • Java连接Oracle数据库开发银行管理系统【三、实现篇】

    说明 里面的主要代码都加的有注释部分 所以代码显得很长 如果有错误的地方 谢谢指出 注意需要导入数据库jar包 1 com ll test包下面类 1 1 test类 package com ll test import com ll se
  • pygame的动图实现方法

    最近在完善一个飞机大战的小游戏 一比一按照书上做出来的有些简陋 所以自己往里面加了不少元素 其中一项便是子弹的动态效果 但是pygame不支持gif的动图 可以导入 但不会动 那么该怎么办呢 我们知道 动图的原理其实就是把一组图片快速播放
  • 【测试开发】阿里十年总结之软件测试的价值

    阿里十年总结之软件测试的价值 1 前言 2 质量是什么 2 1 质量是一种奢侈品 2 2 质量是产品的特性 2 3 质量的重要性取决于业务 3 测试能给业务带来什么 3 1 为什么需要测试 3 2 从质量保障到研发效能 4 测试团队如何去突
  • ElementUI2.0组件库el-table表格组件如何自定义表头?

    问题概述 鼠标移动到el table表格组件的表头显示提示信息 也算是自定义表头的一种吧 效果图 宝宝不会做动图 宝宝心里苦 1 ElementUI2 0组件库el table表格组件常规用法 先贴上ElementUI2 0组件库的官网地址
  • 计算机组成原理——期末复习题

    113 计算机系统如何进行多级划分 这种分级观点对计算机设计会产生什么影响 答案 计算机系统通常由五个以上不用的级组成 具体如下 第1级是微程序设计级或逻辑电路级 该级由硬件直接执行 第2级是一般机器级 也称为机器语言级 它由微程序解释机器
  • ACE编程遇到的问题

    1 配置 在项目的属性页里 添加附加包含目录 附加目录库和附加依赖项 不然容易报缺失头文件的错误 1 2 3 2 项目 error PRJ0002 错误的结果 31 从 C Program Files MicrosoftSDKs Windo
  • 雷电模拟器桥接模式不显示网卡,4版本不能设置代理

    版本3 121 0 点击安装驱动之后 提示成功 但是这时候 桥接网卡 还是不能选中任何东西的 如果这时候直接点保存设置 再运行模拟器 会出现崩溃 点击一键修复 修复完成 提示重启电脑 然而并无卵用 开启模拟器时仍然会崩溃 再提示修复 再提示
  • 信息安全密码学:DES算法的核心 E盒、S盒、P盒

    加密密钥等于脱密密钥 或者由一个可以轻易的计算出另一个的密码体制 称为单密钥密码体制 亦或称为对称密码体制或传统密码体制 其最具代表意义的当然属于DES密码体制了 1 DES的设计背景 1973年5月 NBS 美国国家标准局 发布通告 征集
  • 关于layui的css,js文件的引入问题

    关于layui的css js文件的引入问题 最近在自己搭建写一个SpringBoot的项目 在引入静态资源文件后静态资源文件虽然可以进行访问 但是我点击相关按钮后却发现点击事件却一直无法正常实现 这是第一反应就是我jq和layui是否引入问
  • 安装MySQL失败,Apply Configuration出现Initializing database

    之前安装过启动不了 卸载后重新安装 还是不行 Beginning configuration step Initializing database may take a long time Attempting to run MySQL S
  • HttpStatus状态码详解

    HttpStatus Informational 1xx 信息 100 Continue 继续 101 Switching Protocols 交换协议 Successful 2xx 成功 200 OK OK 201 Created 创建
  • 什么是网站服务器VPS,如何选购最适合自己的一款?

    随着互联网的快速发展 越来越多的人需要建立自己的网站 这就需要有一个可靠的服务器来托管网站 而VPS服务器就是一种非常流行的托管网站的选择 本文将介绍什么是VPS服务器 以及如何选购最适合自己的一款 什么是VPS服务器 VPS服务器是Vir
  • Python读取txt文本出现“ ‘gbk‘ codec can‘t decode byte 0xbf in position 2: illegal multibyte sequence”

    1 通过python读取temp txt时 出现如下错误 错误的意思是 Unicode的解码 Decode 出现错误 Error 了 以gbk编码的方式去解码 该字符串变成 Unicode 但是此处通过gbk的方式 却无法解码 can t
  • 【C/C++】实现num以内的完全数

    include stdio h 如果使用CPP 则使用以下头文件和作用域 include
  • JavaScript复习之特殊的对象-数组

    数组的创建 字面量方式创建数组 var arr1 空数组 创建一个包含3个数值的数组 多个数组项以逗号隔开 var arr2 1 3 4 创建一个包含2个字符串的数组 var arr3 a c console log arr1 consol
  • Spring-boot返回Json格式数据

    Spring boot返回Json格式数据 Spring boot返回json用到的注解为 RestController 新建一个maven项目 编写pom xml文件
  • python 引用(import)文件夹下的py文件的方法

    Python包含子目录中的模块方法比较简单 关键是能够在sys path里面找到通向模块文件的路径 下面将具体介绍几种常用情况 1 主程序与模块程序在同一目录下 如下面程序结构 src mod1 py test1 py 若在程序test1
  • 【死磕 Redis】----- Redis 数据结构: skiplist

    原文 https www cmsblogs com category 1391389927996002304 chenssy 关于跳跃表其实在 JUC 里面有一个并发容器就是利用跳跃表来实现的 ConcurrentSkipListMap 死
  • python开发_常用的python模块及安装方法

    adodb 我们领导推荐的数据库连接组件 bsddb3 BerkeleyDB的连接组件 Cheetah 1 0 我比较喜欢这个版本的cheetah cherrypy 一个WEB framework ctypes 用来调用动态链接库 DBUt
  • SpringBoot2.0(Spring读取配置文件常用方法,打war包在Tomcat中启动)

    目录 一 SpringBoot中读取配置文件的常用方法 1 1 使用 Value读取 1 2 使用 ConfigurationProperties 1 3 使用Environment 1 4 自定义配置文件读取 二 SpringBoot部署