Spring Boot使我們更容易去創(chuàng)建基于Spring的獨立和產(chǎn)品級的可以”即時運行“的應用和服務注竿。支持約定大于配置叮雳,目的是盡可能快地構建和運行Spring應用盗飒。
之前我們創(chuàng)建基于Spring的項目需要考慮添加哪些Spring依賴和第三方的依賴置鼻。使用Spring Boot后段磨,我們可以以最小化的依賴開始spring應用取逾。大多數(shù)Spring Boot應用需要很少的配置即可運行,比如我們可以創(chuàng)建獨立獨立大Java應用苹支,然后通過java -jar運行啟動或者傳統(tǒng)的WAR部署砾隅。其也提供了命令行工具來直接運行Spring腳本(如groovy腳本)。也就是說Spring Boot讓Spring應用從配置到運行變的更加簡單债蜜,但不對Spring本身提供增強(即額外的功能)琉用。
目的:
讓所有Spring開發(fā)變得更快,且讓更多的人更快的進行Spring入門體驗策幼,提供“starter” POM來簡化我們的Maven配置(也就是說使用Spring Boot只有配合maven/gradle等這種依賴管理工具才能發(fā)揮它的能力),不像以前奴紧,構建一個springmvc項目需要進行好多配置等特姐。
開箱即用,快速開始需求開發(fā)而不被其他方面影響(如果可能會自動配置Spring)
提供一些非功能性的常見的大型項目類特性(如內嵌服務器黍氮、安全唐含、度量浅浮、健康檢查、外部化配置)捷枯,如可以直接地內嵌Tomcat/Jetty(不需要單獨去部署war包)
絕無代碼生成滚秩,且無需XML配置
我的構建環(huán)境
JDK 7
Maven 3
Servlet3容器
創(chuàng)建項目
首先使用Maven創(chuàng)建一個普通Maven應用即可,不必是web的淮捆。
添加Spring Boot相關POM配置
在pom.xml中添加如下配置
<!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>0.5.0.BUILD-SNAPSHOT</version>
</parent>
<!-- Add typical dependencies for a web application -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!-- Package as an executable JAR -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<!-- Allow access to Spring milestones and snapshots -->
<!-- (you don't need this if you are using anything after 0.5.0.RELEASE) -->
<repositories>
<repository>
<id>spring-snapshots</id>
<url>http://repo.spring.io/snapshot</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<url>http://repo.spring.io/milestone</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<url>http://repo.spring.io/snapshot</url>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<url>http://repo.spring.io/milestone</url>
</pluginRepository>
</pluginRepositories>
繼承spring-boot-starter-parent后我們可以繼承一些默認的依賴郁油,這樣就無需添加一堆相應的依賴,把依賴配置最小化攀痊;spring-boot-starter-web提供了對web的支持桐腌,spring-boot-maven-plugin提供了直接運行項目的插件,我們可以直接mvn spring-boot:run運行苟径。
實體
Java代碼
package com.sishuok.entity;
/**
* <p>User: Zhang Kaitao
* <p>Date: 13-12-22
* <p>Version: 1.0
*/
public class User {
private Long id;
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
if (id != null ? !id.equals(user.id) : user.id != null) return false;
return true;
}
@Override
public int hashCode() {
return id != null ? id.hashCode() : 0;
}
}
控制器
Java代碼
package com.sishuok.controller;
import com.sishuok.entity.User;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>User: Zhang Kaitao
* <p>Date: 13-12-22
* <p>Version: 1.0
*/
//@EnableAutoConfiguration
@RestController
@RequestMapping("/user")
public class UserController {
@RequestMapping("/{id}")
public User view(@PathVariable("id") Long id) {
User user = new User();
user.setId(id);
user.setName("zhang");
return user;
}
//public static void main(String[] args) {
// SpringApplication.run(UserController.class);
//}
}
運行
第一種方式
通過在UserController中加上@EnableAutoConfiguration開啟自動配置案站,然后通過SpringApplication.run(UserController.class);運行這個控制器;這種方式只運行一個控制器比較方便棘街;
第二種方式
通過@Configuration+@ComponentScan開啟注解掃描并自動注冊相應的注解Bean
Java代碼
package com.sishuok;
import com.sishuok.controller.UserController;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
* <p>User: Zhang Kaitao
* <p>Date: 13-12-22
* <p>Version: 1.0
*/
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
}
到此蟆盐,一個基本的REST風格的web應用就構建完成了。
地址欄輸入http://localhost:8080/user/1
即可看到json結果遭殉。
如果大家查看其依賴石挂,會發(fā)現(xiàn)自動添加了需要相應的依賴(不管你用/不用),但是開發(fā)一個應用確實變得非扯鞴粒快速誊稚,對于想學習/體驗Spring的新手,快速建立項目模型等可以考慮用這種方式罗心。當然如果不想依賴這么多的jar包里伯,可以去掉parent,然后自己添加依賴渤闷。
參考
https://github.com/spring-projects/spring-boot