技术的发展老是由于人们想偷懒的心理,若是咱们不想每次修改了代码,都必须重启一下服务器,并从新运行代码。那么能够配置一下热部署。有了它以后,修改了代码只须要从新build一下,就能够看到效果了,不须要重启服务器。html
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!--开启热部署--> <fork>true</fork> </configuration> </plugin> </plugins> </build>
修改pom.xml文件后,idea会弹出一个让你自动导入包的文件,点击Import Changes
。就会自动将jar包下载到依赖库中。java
如此,就实现了Spring Boot的热部署,此时修改咱们的代码,只需从新Build一下就能够了。git
固然,若是你更懒的话,练build都不想作,也能够在Idea中配置自动Build(自动Build仅支持Spring Boot项目)。github
选中上图中的Build Project automatical
web
Shift+ALT+Ctrl+/
选择Registry
能够看到以下界面选中上图中的complier.automake.allow.when.app.running
spring
如此,修改咱们的代码后,无需从新build也无需从新重启。服务器
application.properties
server.port=8888 <!--网站配置--> website.name=Loading website.domin=www.loading.ink website.title=个人博客网站 website.description=分享个人生活和技术
WebSiteConfig
package spring.boot.web.config; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import java.text.MessageFormat; @Configuration //@ConfigurationProperties(prefix = "website") //要读取的配置文件地址 @PropertySource(value = "classpath:application.properties") public class WebSiteConfig { @Value("${website.title}") private String title; @Value("${website.domain}") private String domain; @Value("${website.description}") private String description; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getDomain() { return domain; } public void setDomain(String domain) { this.domain = domain; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } @Override public String toString() { return MessageFormat.format("Title:{0} Domin:{1} Description:{2}", title, domain, description); } }
读取配置文件中的配置有两种方式app
1.@ConfigurationProperties(prefix = "website")
用于绑定属性,其中prefix表示所绑定的属性的前缀。若是配置文件中的配置和属性名一致能够用此种方式dom
2.@Value("${website.title}")
绑定配置文件中的属性maven
注意:
注解@Configuration
用于定义配置类
注解@PropertySource(value = "classpath:application.properties")
表明要读取配置文件的路径当配置文件是application.properties
时,这个注解能够省略不写
WebSiteController
package spring.boot.web.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import spring.boot.web.config.WebSiteConfig; @RequestMapping("/website") @RestController public class WebSiteController { //经过@Autowired注解注入bean @Autowired private WebSiteConfig webSiteConfig; @RequestMapping(method = RequestMethod.GET) public String get() { return webSiteConfig.toString(); } }
如上图所示更改成uft-8
,注意后面的必定要勾选上。
经过上面配置后若是还不行,能够将配置文件删除后从新建一个,问题就能够解决!
Spring Boot 使用一个全局的配置文件 application.properties
,Spring Boot 的全局配置文件的做用是对一些默认配置的配置值进行修改。
在平常开发中,咱们经常会遇到一个问题。就是在不一样的环境使用不一样的配置。好比生产、开发、测试三个不一样的环境,咱们的配置确定不同。这时,咱们就要用到Profile。
Profile
是 Spring 用来针对不一样的环境对不一样的配置提供支持的,全局 Profile
配置使用 application-{profile}.properties
(如 application-dev.properties
)。经过在 application.properties
中设置 spring.profiles.active = dev
来指定活动的 Profile
。
application-dev.properties
、application-test.properties
、application-prod.properties
。它们分别表明开发环境、测试环境、生产环境的配置文件。server.port=8887 website.title=个人博客网站--Dev website.domain=www.loading.ink website.description=分享个人技术与生活
server.port=8886 website.title=个人博客网站--test website.domain=www.loading.ink website.description=分享个人技术与生活
server.port=8885 website.title=个人博客网站--prod website.domain=www.loading.ink website.description=分享个人技术与生活
application.properties
:表示,将采用application-dev.properties这个配置文件。spring.profiles.active=dev
测试运行咱们能够看到会启动开发环境配置文件的端口8887
注意:配置文件会优先获取Profile
中的配置,若是Profile
中没有的配置项, 那么会直接取application.properties中
的配置