初識springboot 以及基本項目搭建java
因爲新的項目須要搭建後臺框架,以前的springmvc架構也使用屢次,在我印象中springboot的微服務架構更輕量級更容易搭建,因此想去試試springboot的項目搭建,接下來,和你們分享一下初識springboot後對springboot的理解以及springboot的搭建過程
web
一.什麼是springboot?爲何要使用springboot?spring
Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員再也不須要定義樣板化的配置。在我看來,數據庫
springboot就是spring以及springmvc的衍生,是「懶人工具包」
編程
spring boot只是一個配置工具,整合工具,輔助工具.springboot
springboot 最大化的實現了convention over configuration(約定大於配置)架構
Spring 框架就像一個家族,有衆多衍生產品例如 boot、security、jpa等等。但他們的基礎都是Spring 的ioc和 aop. ioc提供了依賴注入的容器, aop解決了面向橫切面的編程,而後在此二者的基礎上實現了其餘延伸產品的高級功能。mvc
Spring MVC是基於Servlet 的一個 MVC 框架主要解決 WEB 開發的問題,由於 Spring 的配置很是複雜,各類XML、 JavaConfig、hin處理起來比較繁瑣。因而爲了簡化開發者的使用,從而創造性地推出了Spring boot,約定優於配置,簡化了spring的配置流程。app
說得更簡便一些:Spring 最初利用「工廠模式」(DI)和「代理模式」(AOP)解耦應用組件。你們以爲挺好用,因而按照這種模式搞了一個 MVC框架(一些用Spring 解耦的組件),用開發 web 應用( SpringMVC )。而後發現每次開發都寫不少樣板代碼,爲了簡化工做流程,因而開發出了一些「懶人整合包」(starter),這套就是 Spring Boot。框架
總結一下springboot的優勢:
(1). 遵循"約定優於配置"原則,使用Spirng Boot只需不多的配置,大部分時候可使用默認配置;
(2) 項目快速搭建,另外還能夠無配置整合第三方框架;
(3) 簡化Maven及Gradle配置
(4) 內嵌入Servlet如Tomcat、jetty容器,應用可用jar包運行(java -jar);
(5) 可徹底不使用xml配置,只使用自動配置和Java Config;
(6) 有多種強大的開發包,支持熱啓動
spring-boot-starter-web:支持全棧web開發,裏面包括了Tomcat和Spring-webmvc。
spring-boot-starter-mail:提供對javax.mail的支持.
spring-boot-starter-ws: 提供對Spring Web Services的支持
spring-boot-starter-test:提供對經常使用測試框架的支持,包括JUnit,Hamcrest以及Mockito等。
spring-boot-starter-actuator:支持產品環境下的一些功能,好比指標度量及監控等。
spring-boot-starter-jetty:支持jetty容器。
spring-boot-starter-log4j:引入默認的log框架(logback)
瞭解了springboot的概念和優點以後,讓咱們來試一下如何在短短几分鐘內搭建springboot項目
二. springboot項目搭建
1.新建maven應用(在idea下新建maven應用)
2.新建maven應用以後,開始配置pom.xml而後import。
在pom中添加如下配置
1 <!-- Spring boot 父引用--> 2 <parent> 3 <groupId>org.springframework.boot</groupId> 4 <artifactId>spring-boot-starter-parent</artifactId> 5 <version>1.4.0.RELEASE</version> 6 </parent> 7 8 <!-- Spring boot 核心web--> 9 <dependencies> 10 <dependency> 11 <groupId>org.springframework.boot</groupId> 12 <artifactId>spring-boot-starter-web</artifactId> 13 </dependency> 14 </dependencies>
3. 而後咱們新建controller
UserController
@RestController public class UserController { //日誌 private final Logger log = LoggerFactory.getLogger(UserController.class); @Autowired//自動注入,能夠直接省略掉set和get,它會幫咱們set和get private UserService userService; @RequestMapping("/getUser") public User getUser() { return userService.getUser(); } @RequestMapping(value="/addUser") public int addUser() { List<User> users = new ArrayList<User>(); User user = new User(); user.setId(2); user.setPassword("32131"); user.setUsername("薩達"); users.add(user); log.info("個人用戶名是"+user.getUsername()+"個人密碼是"+user.getPassword()); return userService.addUserWithBackId(users); } }
這裏個人接口調用了service和數據庫,你們在寫這個controller的時候先隨便返回一下,如system.out等。
4.咱們在包的最外層增長新的應用啓動入口 —> Application
/** * @EnableAutoConfiguration:spring boot的註解,通常只用於主類, * 是無xml配置啓動的關鍵部分,明確指定了掃描包的路徑爲其修飾的主類的包(這也就是爲何主類要放在根包路徑下的緣由) * * @ComponentScan 進行包的掃描,掃描路徑由@EnableAutoConfiguration指定了 * * 主類要位於根包路徑下,方便以後的掃描(We generally recommend that you locate your main application class in a root package above other classes.) * 主類要位於根包路徑下(例如,com.xxx.firstboot),這是推薦作法,方便掃描 每個jar(即每個子項目)都要有一個主方法,用於啓動該jar(也就是一個微服務) 在主類上添加註解@SpringBootApplication,該註解至關於添加了以下三個註解 @Configuration:該註解指明該類由spring容器管理 @EnableAutoConfiguration:該註解是無xml配置啓動的關鍵部分 @ComponentScan:該註解指定掃描包(若是主類不是位於根路徑下,這裏須要指定掃描路徑),相似於spring的包掃描註解 */ //same as @Configuration+@EnableAutoConfiguration+@ComponentScan @SpringBootApplication(exclude={DataSourceAutoConfiguration.class,DataSourceTransactionManagerAutoConfiguration.class}) public class Application { public static void main(String[] args) { SpringApplication.run(Application.class,
args); } }
關於@SpringBootApplication註解的用法在註釋中有說明
此時,項目的結構如圖所示:
啓動應用後訪問http://localhost:8080/get
{"id":1,"username":"yangheng","password":"123"}
到此,基本的springboot框架就算搭建完成了。