springboot怎麼配置java環境
㈠ springboot怎麼指定多環境
SpringBoot是Spring產品中一個新的子項目,致力於簡便快捷地搭建基於Spring的獨立可運行的應用。大多數的SpringBoot應用只需要非常少的Spring配置。你能夠使用SpringBoot創建java應用並通過java-jar來運行或者創建傳統的通過war來部署的應用
㈡ SpringBoot如何定義多套不同的環境配置
一般情況下,多套不同環境(development、test、proction)配置,我們基於SpringBoot的Profiles來實現。**profile配置方式有兩種:**
- 多profile文件方式:提供多個配置文件,每個代表一種環境。
- application-dev.properties/yml 開發環境
- application-test.properties/yml 測試環境
- application-pro.properties/yml 生產環境
- yml多文檔方式:在yml中使用 --- 分隔不同配置
**profile激活三種方式:**
- 配置文件: 再配置文件中配置:spring.profiles.active=dev
- 虛擬機參數:在VM options 指定:-Dspring.profiles.active=dev
- 命令行參數:java –jar xxx.jar --spring.profiles.active=dev
但是考慮到一個問題,生產環境的配置文件的安全性,顯然我們不能,也不應該把生產環境的配置文件放到項目倉庫Git中,進行管理。一般我們將生產環境的配置文件放到生產環境的伺服器中,以固定命令執行啟動:java -jar myboot.jar --spring.config.location=/xx/yy/xx/application-prod.properties。或者,使用Jenkins在執行打包,配置上maven profile功能,使用伺服器的配置文件。最後一種方式,使用配置中心管理配置文件;
如果你對多環境配置文件不理解,就去黑馬程序員官網視頻庫看免費視頻。
㈢ 如何修改Spring Boot應用程序的配置
Spring Boot的配置方式
Spring Boot中遵循了約定優於配置的原則,故我們在構建Spring Boot Application時非常輕松。在實際生產過程中,我們需要針對工程做額外的配置,那麼我們該怎麼使用額外的配置呢?
Spring Boot允許使用外部化配置,以便我們可以在不同的環境中使用相同的應用程序代碼。 這些配置可以使用屬性文件,YAML文件,環境變數和命令行參數等來外化配置。 屬性值可以使用@Value注釋直接注入到bean中,通過Spring的Environment抽象訪問或通過@ConfigurationProperties綁定到結構化對象。
Spring Boot使用一個非常特殊的PropertySource順序,該順序被設計為允許對值進行明智的重寫。 屬性按以下順序考慮:
Devtools global settings properties on your home directory (~/.spring-boot-devtools.properties when devtools is active).
@TestPropertySource annotations on your tests.
@SpringBootTest#properties annotation attribute on your tests.
Command line arguments.
Properties from SPRING_APPLICATION_JSON (inline JSON embedded in an environment variable or system property)
ServletConfig init parameters.
ServletContext init parameters.
JNDI attributes from java:comp/env.
Java System properties (System.getProperties()).
OS environment variables.
A RandomValuePropertySource that only has properties in random.*.
Profile-specific application properties outside of your packaged jar (application-{profile}.properties and YAML variants)
Profile-specific application properties packaged inside your jar (application-{profile}.properties and YAML variants)
Application properties outside of your packaged jar (application.properties and YAML variants).
Application properties packaged inside your jar (application.properties and YAML variants).
@PropertySource annotations on your @Configuration classes.
Default properties (specified using SpringApplication.setDefaultProperties).
㈣ springboot 怎麼配置環境變數
這些方式優先順序如下:
命令行參數
來自java:comp/env的JNDI屬性
Java系統屬性(System.getProperties())
操作系統環境變數
RandomValuePropertySource配置的random.*屬性值
jar包外部的application-{profile}.properties或application.yml(帶spring.profile)配置文件
jar包內部的application-{profile}.properties或application.yml(帶spring.profile)配置文件
jar包外部的application.properties或application.yml(不帶spring.profile)配置文件
jar包內部的application.properties或application.yml(不帶spring.profile)配置文件
@Configuration註解類上的@PropertySource
㈤ 如何使用Spring Boot進行Java EE開發
Spring
Boot項目的主要目標如下:
為所有的Spring開發工作提供一個更快、更廣泛的入門經驗
開箱即用,你也可以通過修改默認值來快速滿足你的項目的需求
提供了一系列大型項目中常見的非功能性特性,如嵌入式伺服器、安全、指標,健康檢測、外部配置等
Spring
Boot不生成代碼,且完全不需要XML配置。下圖顯示了Spring
Boot在Spring生態系統中的位置。
Spring
Boot還附帶了一個命令行工具,你可以用來快速創建Spring原型應用,它提供了一種讓你的Spring應用起步的最快速的方式。該工具允許運行Groovy腳本,這意味著你可以使用類似於Java的語法。
㈥ 如何構建spring boot
Spring Boot充分利用了JavaConfig的配置模式以及逗約定優於配置地的理念,能夠極大的簡化基於Spring
MVC的Web應用和REST服務開發。
Spring
4倡導微服務的架構,針對這一理念,近來在微博上也有一些有價值的討論,如這里和這里。微服務架構倡導將功能拆分到離散的服務中,獨立地進行部署,Spring
Boot能夠很方便地將應用打包成獨立可運行的JAR包,因此在開發模式上很契合這一理念。目前,Spring
Boot依然是0.5.0的里程碑版本,因此相關的文檔尚不完善,本文將會以一個簡單的樣例來介紹基於這個項目的開發過程。
要Spring
Boot進行功能開發,需要使用Gradle或者Maven作為構建工具。在本例中,我們會使用Eclipse和Maven插件進行開發。要使用Spring
Boot,首先創建一個Maven工程,並修改Maven主要的配置文件pom.xml,如下所示:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>0.5.0.M7</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring3</artifactId>
</dependency>
</dependencies>
<properties>
<start-class>com.levin.Application</start-class>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-milestone</id>
<url></url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-milestone</id>
<url></url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
在上面的配置中,需要將工程的parent設置為spring-boot-starter-parent,並添加對spring-boot-starter-web的依賴,這樣我們就無需設置各個依賴項及其版本信息了。並且在構建中要聲明使用spring-boot-maven-plugin這個插件,它會對Maven打包形成的JAR進行二次修改,最終產生符合我們要求的內容結構。
在我們的應用中將要發布一個REST服務,顯示一個基本的用戶信息,首先定義一個簡單的模型類:
package com.levin;
public class Person {
private String name;
private String email;
public Person(String name, String email) {
this.name = name;
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
接下來,我們需要聲明一個Spring MVC的Controller,響應對實體的請求:
@Controller
public class ShowPersonController {
@RequestMapping("/showPerson")
public @ResponseBody Person showPerson() {
return new Person("levinzhang","[email protected]");
}
}
這個類與我們在使用Spring MVC定義Controller時並無任何差別。接下來,我們需要聲明一個主類啟動這個應用程序:
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
這個類的main方法中使用了SpringApplication幫助類,並以Application這個類作為配置來啟動Spring的應用上下文。在這個類中使用了ComponentScan以及EnableAutoConfiguration註解,其中ComponentScan註解會告知Spring掃描指定的包來初始化Spring
Bean,這能夠確保我們聲明的Bean能夠被發現。EnableAutoConfiguration將會啟動自動配置模式,在我們的配置中會將對Tomcat的依賴級聯進來,因此在應用啟動時將會自動啟動一個嵌入式的Tomcat,因為在樣例中使用了Spring
MVC,所以也會自動注冊所需的DispatcherServlet,這都不需要類似web.xml這樣的配置。
在Eclipse中要運行這個應用的話,可以直接以Java
Application的形式來運行這個main函數,此時會啟動應用,我們在瀏覽器中可以看到如下的運行效果,這就是我們想要的REST服務:
在開發調試完成之後,可以將應用打成JAR包的形式,在Eclipse中可以直接使用Maven插件的package命令,最終會形成一個可運行的JAR包。我們使用java
–jar命令就可以運行這個JAR包了。所呈現出的效果與在調試期是一樣的。現在看一下這個JAR包解壓後的目錄結構:
這個JAR包與傳統JAR包的不同之處在於裡面有一個名為lib的目錄,在這個目錄中包含了這個簡單應用所依賴的其他JAR包,其中也包含內置的嵌入式Tomcat,正是使用它,才能發布服務和訪問Web資源。除了我們編寫的源碼所編譯形成的CLASS以外,在org目錄下還有許多Spring所提供的CLASS,正是依賴這些CLASS,才能夠載入位於lib目錄下JAR中的類。這樣的載入機制與在OSGi
bundle中聲明Bundle-Classpath很類似,不過在OSGi中會由容器來負責載入指定路徑下的類。這大致闡述了這樣一個JAR包能夠發布服務的原因。
如果我們想要使用HTML、JSP等Web資源的話,在Controller中直接返回對應的視圖就可以了。
如果我們想要將這個JAR包轉換成可以在Servlet容器中部署的WAR的話,就不能依賴於Application的main函數了,而是要以類似於web.xml文件配置的方式來啟動Spring應用上下文,此時我們需要聲明這樣一個類:
public class HelloWebXml extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
這個類的作用與在web.xml中配置負責初始化Spring應用上下文的監聽器作用類似,只不過在這里不需要編寫額外的XML文件了。
如果要將最終的打包形式改為WAR的話,還需要對pom.xml文件進行修改,除了需要將packaging的值修改為war以外,還需要對依賴進行適當的配置(這一部分在Spring
Boot的樣例和文檔中均未提及,提醒大家注意):
<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>
在這里需要移除對嵌入式Tomcat的依賴,這樣打出的WAR包中,在lib目錄下才不會包含Tomcat相關的JAR包,否則將會出現啟動錯誤。另外,在移除對Tomcat的依賴後,為了保證編譯正確,還需要添加對servlet-api的依賴,因此添加如下的配置:
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>7.0.42</version>
<scope>provided</scope>
</dependency>
在這里將scope屬性設置為provided,這樣在最終形成的WAR中不會包含這個JAR包,因為Tomcat或Jetty等伺服器在運行時將會提供相關的API類。此時,執行mvn
package命令就會得到一個WAR文件,我們可以直接將其放到Tomcat下運行(需要7.0.42版本以上)。
以上介紹了基於Spring Boot開發應用的過程,目前它的文檔尚不完善,但是在GitHub上有不少的樣例,包括與Spring
Data集成訪問資料庫(關系型以及非關系型)、安全、WebSocket等,讀者感興趣可以下載運行,需要注意的是有些樣例中使用的是0.5.0.M6版本,這個版本有問題,運行時會出錯,建議手動修改為0.5.0.M7或快照版本。
基於以上的介紹,希望讀者能夠對Spring
Boot這個新項目有所了解。它簡化了JAR包管理和相關基礎設施環境的配置,能夠幫助我們快速開發Web應用或構建REST服務,希望它能夠盡快完善成熟,更多地用於實踐,提升開發效率。
㈦ springboot怎麼配置伺服器
你可以像使用標準的Java庫文件一樣使用Spring Boot。簡單的將需要的 spring-boot-*.jar 添加到classpath即可。
Spring Boot不要求任何特殊的工具集成,所以可以使用任何IDE,甚至文本編輯器。
只是,仍然建議使用build工具:Maven 或 Gradle。
Spring Boot依賴 使用 org.springframework.boot groupId 。
㈧ spring boot 環境怎麼搭建
SpringBoot是Spring產品中一個新的子項目,致力於簡便快捷地搭建基於Spring的獨立可運行的應用。大多數的SpringBoot應用只需要非常少的Spring配置。你能夠使用SpringBoot創建Java應用並通過java-jar來運行或者創建傳統的通過war來部署的應用。SpringBoot也提供了一個命令行工具來運行spring腳本。SpringBoot的目標是:快速開發基於Spring的應用開箱即用的微服務提供一些大型項目常用的非功能性特性,例如:嵌入式服務、安全、監控、健康檢查、外部配置不用生成代碼,沒有xml配置
㈨ 如何使用Spring Boot的自動配置
第一步,編寫配置Bean——PrintAfterInitBean
代碼如下,因為只是一個簡單例子,這里的配置Bean其實可以是其他任何復雜配置Bean,例如DataSource。往往一個公共包需要多個這樣配置Bean才能完成其配置。
public class PrintAfterInitBean implements InitializingBean {
private String message;
public void afterPropertiesSet() throws Exception {
System.out.println(message);
}
//setter getter
}
第二步,創建一個AutoConfiguration。
如果搜索Spring Boot下面的類,你會發現其實有很多名字形如xxxAutoConfiguration的類,這些類都是Spirng Boot為我們做的一些快捷配置類。 創建一個TestAutoConfig,作為一個自動配置類
@Configuration
public class TestAutoConfig {
@Bean
@ConfigurationProperties(prefix = "init")
@ConditionalOnMissingBean(PrintAfterInitBean.class)
@ConditionalOnProperty(prefix = "init",value = "message")
public PrintAfterInitBean printAfterInitBean() {
return new PrintAfterInitBean();
}
}
@ConfigurationProperties 是Spring Boot提供的方便屬性注入的註解,功能其實和@Value類似
@ConditionalOnMissingBean 表示當BeanFactory中沒有PrintAfterInitBean類型的Bean才會創建,否則就會忽略這個Bean。這個就是上圖中所謂的【滿足自動配置條件】,同理的,ConditionalOnProperty表示當存在配置前綴為init,配置值為message的配置的時候,才會生效。@ConditionalOnXXX 系列的註解都是為了在自動配置中,不侵入用戶的配置。
第三步,創建spring.factories
在resources下面創建META-INF/spring.factories, 然後在文件中把第二步的類配置進去
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.netease.xxx.xxx.UrsPropertyAutoConfig
這樣就完成一個Spring Boot自動配置,如果存在init.message的配置,那麼spring boot啟動的時候就會列印init.message配置對應值。