- 項目結構
- pom.xml
<!-- 打包爲war包,部署在tomcat容器啓動 -->
<packaging>war</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- jsp支持開啓 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!-- servlet支持開啓,上面exclusions掉tomcat後必須加這個 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
</dependencies>
<build>
<!-- 訪問url中的項目名 -->
<finalName>outconfig-demo</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
- 啓動類,App
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
- 配置tomcat 啓動讀取外部文件
public class AppConfig extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(App.class);
}
}
- 獲取屬性並賦值,指定參數
@Configuration
@PropertySource("file:${mypath.config}/application.properties")
public class DemoConfig {
@Value("${user.username}")
private String key;
@Value("${user.password}")
private String value;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
@Override
public String toString() {
return "DemoConfig [key=" + key + ", value=" + value + "]";
}
}
- controller測試類,預期打印出DemoConfig內容
@Controller
@RequestMapping("/test")
public class TestController {
@Autowired
private DemoConfig demoConfig;
@RequestMapping("/getConfig")
@ResponseBody
public String getConfig() {
return demoConfig.toString();
}
}
- 項目下的application.properties
spring.profiles.active=outConfig
windows環境下:
- D:\test 路徑下編輯 application.properties
user.username=qhf
user.password=abcdefg
- eclipse 啓動 tomcat,添加參數
- 啓動tomcat
- 運行測試
linux 環境下:
- 打成 war 包上傳到 tomcat 的 webapps 目錄下:run as Maven build
- vim /app/tomcat/tomcat-8080/bin/setenv.sh
#!/bin/bash
JAVA_HOME=/usr/local/jdk1.8.0_191
CATALINA_HOME=/app/tomcat/tomcat-8080
CATALINA_PID=/app/tomcat/tomcat-8080/bin/tomcat.pid
JAVA_OPTS="-server -Dfile.encoding=UTF-8 -Djava.awt.headless=true"
JAVA_OPTS="$JAVA_OPTS -server -Xms2G -Xmx2G -XX:MaxNewSize=512m -XX:MaxMetaspaceSize=512m -XX:MetaspaceSize=512m"
JAVA_OPTS="$JAVA_OPTS -Dmypath.config=/home/qhf"
- 運行 tomcat
- 訪問測試