时间:2017年04月03日星期一java
说明:配置文件管理对项目而言是相当重要的。在开发中,配置信息会分为开发环境、测试环境、生成环境等。将配置文件提取出项目包,有利于灵活更改配置信息而不须要从新构建及部署,只需重启web容器便可。web
前提条件:项目使用Tomcat做为web容器且已近安装好Tomcat。spring
使用springboot框架来搭建演示项目。apache
项目总体目录结构以下vim
项目POM文件tomcat
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zccoder</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>demo</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
编写启动类springboot
package com.zccoder.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * 项目启动类,经过main方法启动 * @author ZhangCheng * @date 2017-04-03 * @version V1.0 */ @SpringBootApplication public class DemoConsoleMain { public static void main(String[] args) { SpringApplication.run(DemoConsoleMain.class, args); } }
package com.zccoder.demo; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; /** * 项目启动类,经过监听容器启动 * @author ZhangCheng * @date 2017-04-03 * @version V1.0 */ public class DemoConsoleWeb extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(DemoConsoleMain.class); } }
编写配置文件对应实体类app
package com.zccoder.demo.config; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; /** * 项目配置文件类 * @author ZhangCheng * @date 2017-04-03 * @version V1.0 * */ @Configuration @ComponentScan("com.zccoder.demo") @Component(value="demoProperties") /** 生产环境-加载配置文件 */ @PropertySource(value="${DEMO_PROPERTIES_FILE}") /** 测试环境-加载配置文件 */ @PropertySource(value="${DEMO_PROPERTIES_FILE}") /** 开发环境-加载配置文件 */ //@PropertySource(value="file:C:\\Test\\DemoProperties.properties") public class DemoProperties { public DemoProperties(){ System.out.println("==========>DemoProperties执行<=========="); } @Value("${mail.default.from}") private String mailFrom; @Value("${mail.host}") private String mailHost; @Value("${mail.username}") private String mailName; @Value("${mail.host}") private String host; @Value("${mail.username}") private String username; @Value("${mail.password}") private String password; public String getMailFrom() { return mailFrom; } public String getMailHost() { return mailHost; } public String getMailName() { return mailName; } public String getHost() { return host; } public String getUsername() { return username; } public String getPassword() { return password; } @Override public String toString() { return "DemoProperties [mailFrom=" + mailFrom + ", mailHost=" + mailHost + ", mailName=" + mailName + ", host=" + host + ", username=" + username + ", password=" + password + "]"; } }
编写控制器框架
package com.zccoder.demo.web.rest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.zccoder.demo.config.DemoProperties; /** * 演示控制器 * @author ZhangCheng * @date 2017-04-03 * @version V1.0 * */ @RestController @RequestMapping("/demo") public class DemoController { @Autowired private DemoProperties demoProperties; /** * 功能:获取配置信息 * @return */ @GetMapping("/getMailInfo") public String getMailInfo(){ System.out.println(demoProperties.toString()); return demoProperties.toString(); } }
使用cd进入tomcat的bin目录webapp
使用vim修改catalina.sh文件
找到JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS"处,在下方添加环境变量
其中
DEMO_PROPERTIES_FILE:为变量名,项目里面经过${DEMO_PROPERTIES_FILE}取值 file:/home/zc/demo/8201demo/conf/DemoProperties.properties:配置文件所在路径
修改完成后,使用:wq保存
将配置文件经过ftp工具上传至tomcat的conf目录,即刚才配置的目录。
将演示项目打包,并使用ftp工具上传至tomcat的webapps目录,并重命名。
启动tomcat
启动成功,访问演示项目写好的控制器
访问成功且配置信息获取成功。之后有配置信息须要修改时,只须要需改配置文件,而后重启tomcat便可生效。而不须要从新构建项目。