Springboot基於tomcat啓動讀取外部配置文件

  • 項目結構

 

 

  • 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

  • 訪問測試

 

 

發佈了62 篇原創文章 · 獲贊 5 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章