1.框架搭建。
採用的開發工具是IntelliJ IDEA 2017.3.4 x64。
(1).File --> New Project --> Spring Initializr,如圖下所示:
(2).填寫maven的座標,選擇打包方式,沒啥好多的,用過maven的都很熟悉。
(3).選擇依賴。
(4).選擇項目在磁盤上的工作空間,點擊Finish。
(5).項目新建成功,項目結構如圖所示。
(6)運行Demo,直接運行CsdnApplication的main方法就好了,出現如下界面則搭建成功。
2.HelloWord
(1).新建HelloController(暫時將HelloController和CsdnApplication同一級目錄下,後續再說爲什麼再做相關改變),如圖所示:
(2).測試Helloworld,本人用的PostMan工具,其他的接口測試工具,瀏覽器啥的都可以。
3.springboot配置
springboot的一大亮點就是配置超級簡單,本文只是一個demo,只做做基礎的配置。配置文件這邊我用的是.yml文件,它比.properties的好處是,有天然的樹狀結構,比較清晰,但是作用都是一樣的。我的配置文件如下(配置文件內容可以到最下面的鏈接下載):
pom文件詳情:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>csdn</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>csdn</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除嵌入式tomcat插件 部署到tomcat的時候使用 -->
<!--<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>-->
</dependency>
<!-- 部署到tomcat的時候打開 -->
<!--<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>8.0.36</version>
<scope>provided</scope>
</dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.13</version>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version>3.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4.數據庫操作
新建實體類:User.java。user裏面的字段上的註解,看名字都看出來什麼意思了,就是和數據庫表的映射。
package com.example.csdn;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
/**
* Created by Administrator on 2017/7/21.
*/
@Entity
public class User {
@Id
@Column(name="id",nullable = false)
@GeneratedValue
private Long id;
@Column
private String username;
@Column
private String name;
@Column
private String password;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User(String username,String name,String password){
super();
this.username=username;
this.name=name;
this.password=password;
}
//必須有一個無參構造方法,否則會報錯
public User(){
}
@Override
public String toString() {
return getId()+","+getUsername()+","+getName();
}
}
創建mapper查詢接口 UserMapper,UserMapper繼承自JpaRePository,jpa幫我們實現了好多實用的CRUD方法。
package com.example.csdn;
import com.example.csdn.User;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface UserMapper extends JpaRepository<User, Long> {
}
建立service,注入Usermapper。
package com.example.csdn;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Optional;
@Service
public class UserService {
@Autowired
UserMapper userMapper;
@Transactional
public User insert(User user){
return userMapper.save(user);
}
public void deleteById(Long userId){
userMapper.deleteById(userId);
}
public User update(User user){
return userMapper.save(user);
}
public Optional<User> findById(Long id){
Optional<User> user = userMapper.findById(id);
List<User> all = userMapper.findAll();
return user;
}
public List<User> findList(){
List<User> userList = userMapper.findAll();
return userList;
}
}
新建UserController.java,調用Service,實現用戶新增。
ackage com.example.Controller;
import com.example.bean.User;
import com.example.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/users/insert")
public User insert(User user){
return userService.insert(user);
}
}
postman發送測試請求。
測試成功,再到數據庫裏面看一看。
5.其他
(1).實際開發中肯定要分包分類,肯定不能將Controller,Service,Bean都放在一起,這個時候就新建包,新建類。新建包的時候要注意,想要讓SpringBoot能夠掃描到你的類,將其注入到IOC容器裏,最直接的方法是將CsdnApplication.java這個文件放到Controller,Service這些包的父級,因爲SpringBoot默認掃描的是啓動類文件的同級及其子集的所有.java文件。結構如圖所示:
(2)若要開啓Springboot的事務(最簡單的事務,關於事務的隔離級別,spring的事務傳播等就不說了),最簡單的方法是註解。第一步在啓動類上聲明開啓註解。
@EnableTransactionManagement
@SpringBootApplication
public class CsdnApplication {
public static void main(String[] args) {
SpringApplication.run(CsdnApplication.class, args);
}
}
然後在Service方法上加入註解
@Transactional
public User insert(User user){
return userMapper.save(user);
}
如果寫上了如上的兩個註解,事務還是不會滾,可以在springboot的配置文件裏面加上dialect:org.hibernate.dialect.MySQL5InnoDBDialect(參照前文的springboot配置文件)。
(3)更改啓動輸出的banner。springboot啓動的時候,會有如下輸出,如果不喜歡的話,可以更改。更改方法:將banner.txt(到最下面的文件下載鏈接裏面找)放到\src\main\resources目錄下,啓動就Ok了。
更改前:
更改後(苦中作樂一下,是不是很好玩):
6.總結。
springboot還是很簡介的,本文只介紹了最基礎的功能,關於springboot的高級應用,例如定時任務,異步任務,上傳下載,springboot攔截器等後續再說明吧。