1. springboot是對spring的缺點進行改善和優化,它的約定大於配置,開箱即用,沒有代碼生成,也不需要xml文件配置,可以修改屬性值來滿足需求 2. springboot的入門程式 在idea中創建springboot的項目 (1) 預設有個DemoApplication類,是sprin ...
1. springboot是對spring的缺點進行改善和優化,它的約定大於配置,開箱即用,沒有代碼生成,也不需要xml文件配置,可以修改屬性值來滿足需求
2. springboot的入門程式
在idea中創建springboot的項目
(1) 預設有個DemoApplication類,是springboot的啟動類
這個類必須要和其他代碼的父級齊平,即它與所有類的父級是同一等級
@SpringBootApplication public class DemoApplication { public static void main(String[] args) {//啟動類 SpringApplication.run(DemoApplication.class, args); } }
(2) 在resource目錄下有application.properties,是springboot的配置文件
(3) test包下有DemoApplicationTests測試類,是springboot的單元測試
(4) pom.xml文件
3. springboot web應用
創建實體bean Car類
導入依賴,安裝lombok插件
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.6</version> </dependency>
Car.java
@Data //set+get @NoArgsConstructor //無參構造 @AllArgsConstructor //包含所有參數的有參構造 public class Car { private Integer id; private String name; private Float price; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")//時間格式轉化 private Date createDate; }
CarController.java
@RequestParam:獲取查詢參數
@PathVariable:獲取路徑參數
@RestController //@RestController:相當於@Controller+@ResponseBody
@RequestMapping("/car")
public class CarController {
@RequestMapping("/findCar")
public Car findCar(){
Car car = new Car(1, "寶馬", 123.0F, new Date()); return car;
}
@RequestMapping("/getCar/{id}")
public Car findOne(@PathVariable("id")Integer id, @RequestParam("name")String name,@RequestParam("price")Float price){
Car car = new Car();
car.setId(id); car.setName(name);
car.setPrice(price);
return car;
}
}
獲取springboot靜態資源
(1) 預設靜態資源映射
springboot預設將/**所有訪問映射到classpath:/static,classpath:/public,classpath:/WETA-INF/resources
即在resources目錄下新建public,static,META-INF/resources,分別放入靜態資源文件,可以直接通過訪問資源名稱,即可訪問
Spring Boot 預設會挨個從 public、META-INF/resources、static 裡面找是否存在相應的資源,如果有則直接返回
(2) 自定義靜態資源訪問
第一種方式:可以創建一個配置類
@Configuration //將一個java類作為一個配置類 public class WebMvcConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) {
//將所有d:\\Desktop\\訪問都映射到/pathFile/**路徑下
registry.addResourceHandler("/pathFile/**").addResourceLocations("file:d:\\Desktop\\");
}
}
在瀏覽器輸入:localhost:8080/pathFile/1.jpg即可訪問該圖片資源
第二種方式:修改配置文件application.properties
編寫配置文件中的代碼時,一定要細心,我同學就是因為在spring.mvc.static-path-pattern=/**後多寫了一個空格,導致一直訪問出錯,所以在配置時,一定要仔細檢查
# 自定義的屬性,指定一個路徑
web.upload-path=d:/Desktop/
#表示所有的訪問都經過靜態資源路徑
spring.mvc.static-path-pattern=/**
# 配置靜態資源路徑,這裡的配置會覆蓋預設訪問配置(public、static、resources路徑訪問將會失效),所以需要配置
spring.resources.static-locations=classpath:/static/,classpath:/public/,classpath:/META-INF/resources/,file:${web.upload-path}
在瀏覽器輸入:localhost:8080/1.jpg即可訪問
WebJars
將所有前端的靜態文件打包成一個jar包,然後引入此jar包,可以很好的對前端靜態資源進行管理
當時在打包時,因為直接把整個項目打成jar包,在本項目中引入後訪問,一直報404。項目不能引入自己的jar包?我也不清楚什麼原因,反正就是一直報錯,就很煩~。
解決:1.一定要新建一個項目,在新項目中引入jar包的依賴,
2. 要保證新項目中沒有該jar包中的靜態資源文件
3.springboot屬性配置
修改springboot自動生成的application.properties配置文件的尾碼名為yml(yml幹嘛的我也不清楚,反正就是要修改成yml,可能更好用?),可以修改預設配置
springboot開發web應用的時候,預設tomcat啟動埠號為8080,可以在配置文件中修改訪問的埠號:
server:
port: 8888
註意:port前一定要留有空格,port:後也要留有空格(不留,在idea中port單詞會不變色,不能使用)
也可以修改訪問路徑:
server: port: 8888 servlet: context-path: /java0708
此時可以訪問:http://localhost:8888/java0708
書寫是有順序的,也有約束,要根據約束寫,不然不起作用
也可以自定義屬性和讀取
在application.yml中定義常量:
offcn_ip: 12.134
編寫Controller類,讀取自定義的屬性:
@RestController public class TestConController { @Value("${offcn_ip}") private String offcn_ip; @GetMapping("/getValue") public String getIP(){ return "ip:"+offcn_ip; } }
實體類屬性賦值
在application.yml中配置:
userbody: name: offcn password: 123456 birthday: 1992.10.28 mobile: 13802789765 address: beijing
不能再配置文件中寫中文,會出現亂碼,需要通過轉碼工具,才能輸出中文(很麻煩,所以我寫的是英文)
創建實體類
@ConfigurationProperties(prefix = "userbody") public class UserBody { private String name; private String password; private String birthday; private String mobile; private String address; }
編寫Controller調用屬性bean
@RestController @EnableConfigurationProperties({UserBody.class}) public class HelloControllerBean { @Autowired UserBody userbody; @GetMapping("/getUser") public String getUser(){ return userbody.toString(); } }
springboot構建RESTful
RESTful是一種軟體架構風格!
RESTful架構風格規定,數據的元操作,即CRUD(create, read, update和delete,即數據的增刪查改)操作,分別對應於HTTP方法:GET用來獲取資源,
POST用來新建資源(也可以用於更新資源),
PUT用來更新資源,
DELETE用來刪除資源,
這樣就統一了數據操作的介面,僅通過HTTP方法,就可以完成對數據的所有增刪查改工作
HTTP協議請求方法 |
SpringBoot註解 |
URL |
功能說明 |
POST |
@PostMapping |
/users |
創建一個用戶 |
GET |
@GetMapping |
/users |
查詢用戶列表 |
GET |
@GetMapping |
/users/id |
根據id查詢一個用戶 |
PUT |
@PutMapping |
/users/id |
根據id更新一個用戶 |
DELETE |
@DeleteMapping |
/users/id |
根據id刪除一個用戶 |
@RestController @RequestMapping("/user-test") public class UserController { private List<User> userList = Collections.synchronizedList(new ArrayList<User>()); //獲取全部用戶信息 @GetMapping("/") public List<User> getUserList(){ return userList; } //添加用戶信息 @PostMapping("/") public String createUser(User user){ userList.add(user); return "success"; } //獲取指定用戶id信息 @GetMapping("/{id}") public User getUser(@PathVariable("id") Long id){ for (User user : userList) { if (user.getId() == id){ return user; } } return null; } //修改指定用戶id信息 @PutMapping("/{id}") public String updateUser(@PathVariable("id")Long id,User user){ for (User user1 : userList) { if (user1.getId() == id){ user1.setName(user.getName()); user1.setAge(user.getAge()); } } return "success"; } //刪除指定用戶id信息 @DeleteMapping("/{id}") public String deleteUser(@PathVariable("id")Long id){ userList.remove(getUser(id)); return "success"; } }
今天知識有點多,有點雜,很多代碼都沒有貼出來了,我還是比較懶,就總結了一些重要的知識點,應該不太全面,之後有時間會繼續完善的
作為初學者的我,這東西不是太好用,可能用spring習慣了,不過大多的知識還是比較基礎的,今天學習比較輕鬆,明天繼續努力啦