時間: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便可生效。而不須要從新構建項目。