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

目录

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

1.1,使用@Value读取

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

例如在Controller中使用:

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

@Value可以放到属性或方法上,能够正常使用的前提是所在类,必须在SpringBoot的生命周期内。

我们怎么把一个类放到Spring的生命周期中进行管理?使用的是@Component注解

因为@Controller和@Service本身就包含@Component。所以可以直接使用。

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

java 复制代码
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中写

java 复制代码
@RestController
public class HelloController {

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


使用ing类型写

java 复制代码
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;
}
java 复制代码
@RestController
public class HelloController {

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

1.2,使用@ConfigurationProperties

BootProperties类

java 复制代码
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类

java 复制代码
@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方法来获取某个配置项的值

java 复制代码
@RestController
public class HelloController {

    @Autowired
    private Environment environment;
	
   	@RequestMapping("/test7")
    public Object test7(){
        return environment.getProperty("server.port");
    }
	
}

1.4,自定义配置文件读取

使用之前的知识来理解下面的代码。

主要添加新的注解@PropertySource

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

javascript 复制代码
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类

java 复制代码
@RestController
public class HelloController {

    @Autowired
    private SysProperties sysProperties;
	
    @RequestMapping("/test6")
    public Object test6(){
        return sysProperties.getParam1()+sysProperties.getParam2();
    }
	
}

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

创建一个新项目

在添加个模块

然后在pom中添加依赖

xml 复制代码
    <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类里面加个方法

java 复制代码
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包粘贴的那个文件夹

现在就好了,打开浏览器试试

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

相关推荐
李长渊哦6 小时前
使用Druid连接池优化Spring Boot应用中的数据库连接
数据库·spring boot·后端
web135085886356 小时前
【Spring Boot】Spring AOP动态代理,以及静态代理
spring boot·后端·spring
zzyh1234568 小时前
springcloud的组件及作用
后端·spring·spring cloud
尚学教辅学习资料8 小时前
基于SpringBoot的图书借阅小程序+LW参考示例
spring boot·后端·小程序·java毕设·图书借阅
一 乐8 小时前
高校体育场管理系统系统|体育场管理系统小程序设计与实现(源码+数据库+文档)
前端·javascript·数据库·spring boot·高校体育馆系统
山海不说话8 小时前
从零搭建微服务项目Base(第5章——SpringBoot项目LogBack日志配置+Feign使用)
spring boot·后端·spring·spring cloud·微服务·logback
不良人天码星9 小时前
Redis的简单使用
java·spring boot·redis·mybatis
Beekeeper&&P...10 小时前
Spring Security,servlet filter,和白名单之间的关系
hive·spring·servlet
初尘屿风10 小时前
小程序类毕业设计选题题目推荐 (29)
spring boot·后端·学习·微信·小程序·课程设计
qq_124987075310 小时前
Java+SpringBoot+数据可视化的家庭记账小程序(程序+论文+安装+调试+售后等)
java·spring boot·小程序·毕业设计