Spring Boot能夠更爲方便地搭建一個Web系統,以後服務器上部署也較爲方便java
1. 使用IDEA建立項目web
2. 修改groupid和artifactspring
3. 一路next,自動IDEA就會自動下載依賴的jar包數據庫
4. 運行json
以後運行項目(Application類),打開http://localhost:8080
就會出現下面的白板頁面,說明已配置成功tomcat
咱們能夠看見項目中是這樣的結構,Spring boot內置了tomcat服務器,因此,咱們能夠直接經過application來啓動springboot
SpringbootdemoApplication服務器
package com.wan.springbootdemo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringbootdemoApplication { public static void main(String[] args) { SpringApplication.run(SpringbootdemoApplication.class, args); } }
能夠看到SpringbootdemoApplication中的代碼比較簡單,使用了一個註解SpringBootApplication
,用來標註當前類是Spring boot的入口類,以後經過SpringApplication.run
啓動mybatis
SpringBootApplication註解中也是內置了幾個spring的註解,打開其中能夠看到
mvc
@SpringBootConfiguration 表示該類是一個配置類
@EnableAutoConfiguration 啓用自動配置,例如添加了spring-boot-starter-web依賴,會自動添加Tomcat和SpringMVC的依賴,SpringBoot會對Tomcat和SpringMVC進行自動配置.
@ComponentScan 能掃描當前包及其子包中的類 即com.lanqiao.springboot.tutorials包及其子包下的全部的組件類。
spring boot使用一個封裝的註解,把以前咱們得使用註解和配置文件去配置spring的步驟都省去了,springboot不只讓咱們的編碼是輕量級的,並且也把咱們的配置變成了輕量級
以前使用springmvc框架,咱們寫一個controller,得在配置文件中開啓自動掃描,而後controller類中使用controller註解進行標明,而使用spring boot則不須要這麼繁瑣,只須要標註上一個@RestController
註解便可
註解RestController包含了Controller和ResponseBody,返回的實體類或者List都會轉爲json數據
這裏可使用spring boot中的註解,也可使用spring mvc的註解RequestMapping
、ResponseBody
等
package com.wan.springbootdemo.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @author StarsOne * @date Create in 2019/10/17 0017 18:24 * @description */ @RestController public class UserController { @RequestMapping("user/data") public String getData() { return "this is returning data"; } }
而後經過訪問localhost:8080/user/data
就能夠看到返回的數據
上面的項目接口中,咱們能夠看到一個名爲application.properties
的文件,裏面能夠用來進行一些設置,如context上下文,port端口號
補充:spring boot中除了使用properties這種文件進行配置,還可使用yml文件
我在其中添加了下面的代碼,就是用來設置context
server.servlet.context-path=/springbootdemo
以後上面的controller的訪問地址就會變爲了localhost:8080/springbootdemo/user/data
啓動的時候,命令行會出現一個Spring Boot的頁面
不知道爲何,我這裏啓動的圖標怎麼看都不像Spring Boot。。
咱們想要去除這個圖標,能夠修改application中的啓動方式來達到目的
package com.wan.springbootdemo; import org.springframework.boot.Banner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringbootdemoApplication { public static void main(String[] args) { SpringApplication springApplication = new SpringApplication(SpringbootdemoApplication.class); // 去除啓動控制檯Spring Boot的圖標 springApplication.setBannerMode(Banner.Mode.OFF); springApplication.run(args); } }
想要實現修改文件,而不想要重啓application,能夠進行熱部署設置,設置很簡單,只須要添加下面的這個依賴便可(以前建立項目的時候其實已經添加了此依賴)
<!-- 自動加載SpringBoot的更改 無需重啓引導類 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>
可能還須要進行下面的運行配置:
添加下面的依賴 ``` <!-- 使用mybatis--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency> ```
創表和建立實體類,還有建立對應的mapper.xml和mapper.java文件
這裏須要注意,mapper接口文件須要加上註解@Repository
,須要spring進行管理,以後咱們須要一個對應的Service.java,包含着mapper接口,使用spring把mapper自動裝載
package com.wan.mofang.service; import com.wan.mofang.mapper.UserMapper; import com.wan.mofang.model.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** * @author StarsOne * @date Create in 2019/10/28 0028 22:46 * @description */ @Service public class UserService { @Autowired UserMapper userMapper;//自動裝載的對象 public List<User> selectAll(User user) { return userMapper.selectAll(user); } }
UserController.java
package com.wan.mofang.controller; import com.wan.mofang.model.User; import com.wan.mofang.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * @author StarsOne * @date Create in 2019/10/28 0028 22:54 * @description */ @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService;//自動裝載 @RequestMapping("selectAll") public List<User> selectAll(User user) { return userService.selectAll(user); } }
PS:這裏,須要注意的,若是是傳入一個實體類,url傳入的參數名要與User中的成員變量名一致,若是是String類型或者是Int類型,則url傳入的參數則與參數名對應
若有下面的一個controller裏面方法:
@RequestMapping("selectAll") public List<User> selectAll(String username) { return userService.selectAll(user); }
傳入的url爲url=xx?username=xx
這裏使用yml來配置,固然,使用properties文件也能夠,根據實際狀況,進行修改(修改application-dev.yml)
application.yml
spring: profiles: active: dev
application-dev.yml
server: port: 端口號,默認不寫就是8080 servlet: context-path: 項目上下文 spring: datasource: username: 數據庫用戶名 password: 數據庫密碼 url: 數據庫地址 driver-class-name: oracle驅動 mybatis: mapper-locations: classpath:mapping/*Mapper.xml type-aliases-package: 好像配置了別名沒有啓動做用 #showSql logging: level: com: example: mapper : debug
在Spring Boot啓動類使用註解MapperScan
,參數爲mapper.java文件所在的包,就會自動掃描並生成mapper的bean對象
package com.wan.mofang; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @MapperScan("com.wan.mofang.mapper") @SpringBootApplication public class MofangApplication { public static void main(String[] args) { SpringApplication.run(MofangApplication.class, args); } }
直接建立一個入口類的對應的Test,以後使用上註解SpringBootTest
,指定入口類,以後,須要的文件使用註解Autowired
進行自動裝載,
@SpringBootTest(classes = MofangApplication.class) class MofangApplicationTests { @Autowired UserService userService; @Test void testSelectALl(){ List<User> user = userService.selectALl(); ... } }