初識springboot 以及基本項目搭建
由於新的項目需要搭建后台框架,之前的springmvc架構也使用多次,在我印象中springboot的微服務架構更輕量級更容易搭建,所以想去試試springboot的項目搭建,接下來,和大家分享一下初識springboot后對springboot的理解以及springboot的搭建過程
一.什么是springboot?為什么要使用springboot?
Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。在我看來,
springboot就是spring以及springmvc的衍生,是“懶人工具包”
spring boot只是一個配置工具,整合工具,輔助工具.
springboot 最大化的實現了convention over configuration(約定大於配置)
Spring 框架就像一個家族,有眾多衍生產品例如 boot、security、jpa等等。但他們的基礎都是Spring 的ioc和 aop. ioc提供了依賴注入的容器, aop解決了面向橫切面的編程,然后在此兩者的基礎上實現了其他延伸產品的高級功能。
Spring MVC是基於Servlet 的一個 MVC 框架主要解決 WEB 開發的問題,因為 Spring 的配置非常復雜,各種XML、 JavaConfig、hin處理起來比較繁瑣。於是為了簡化開發者的使用,從而創造性地推出了Spring boot,約定優於配置,簡化了spring的配置流程。
說得更簡便一些: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框架就算搭建完成了。