The Spring Boot project (ref. 1) provides a standard template like the default templates for ASP. NET MVC, which integrates a series of components directly and uses the default configuration. Using spring Boot does not reduce learning costs or even increase learning costs, but it significantly reduces usage costs and improves development efficiency. If there is no spring foundation it is not recommended to get started directly.
1. Basic projects
This is all about Maven-based project builds, using the Spring Boot CLI command-line tool and the Gradle build method, please refer to the official website.
(1) Create the project:
To create a MAVEN project of type QuickStart, delete the default maven directory by deleting the. java files that are generated.
(2) Modify/pom.xml
1 <?xml version= "1.0" encoding= "UTF-8"?> 2 <project xmlns= "http://maven.apache.org/POM/4.0.0" xmlns:xsi= " Http://www.w3.org/2001/XMLSchema-instance "3 xsi:schemalocation=" http://maven.apache.org/POM/4.0.0/http Maven.apache.org/xsd/maven-4.0.0.xsd "> 4 <modelVersion>4.0.0</modelVersion> 5 <groupid>com.ex Ample</groupid> 6 <artifactId>myproject</artifactId> 7 <version>0.0.1-snapshot</version > 8 <properties> 9 <java.version>1.8</java.version>10 </properties>11 <p Arent>12 <groupid>org.springframework.boot</groupid>13 <artifactid>spring-boot-starte r-parent</artifactid>14 <version>1.3.1.release</version>15 </parent>16 <depende Ncies>17 <dependency>18 <groupid>org.springframework.boot</groupid>19 <artifactid>spring-boot-starter-web≪/artifactid>20 </dependency>21 </dependencies>22 </project>
(3) Add/src/main/sample/controller/homecontroller.java file:
1 package Simple.controller; 2 3 import org.springframework.web.bind.annotation.*; 4 5 @RestController 6 public class HomeController {7 8 @RequestMapping ("/") 9 public String Index () {Ten return "Hello world!"; }12}
(4) Add/src/main/sample/application.java file:
1 package simple; 2 3 import org.springframework.boot.*; 4 import org.springframework.boot.autoconfigure.*; 5 import simple.controller.*; 6 7 @EnableAutoConfiguration 8 public class Application {9 public static void Main (string[] args) throws Excep tion { springapplication.run (new object[] {application.class, homecontroller.class}, args); }13 14}
Enter http://localhost:8080/in the browser to see the "Hello World" running results directly.
2. Add Data Access support
(1) Modify Pom to add SPRING-BOOT-STARTER-DATA-JPA and H2 dependencies:
1 <?xml version= "1.0" encoding= "UTF-8"?> 2 <project xmlns= "http://maven.apache.org/POM/4.0.0" xmlns:xsi= " Http://www.w3.org/2001/XMLSchema-instance "3 xsi:schemalocation=" http://maven.apache.org/POM/4.0.0/http Maven.apache.org/xsd/maven-4.0.0.xsd "> 4 <modelVersion>4.0.0</modelVersion> 5 <groupid>com.ex Ample</groupid> 6 <artifactId>myproject</artifactId> 7 <version>0.0.1-snapshot</version > 8 <properties> 9 <java.version>1.8</java.version>10 </properties>11 <p Arent>12 <groupid>org.springframework.boot</groupid>13 <artifactid>spring-boot-starte r-parent</artifactid>14 <version>1.3.1.release</version>15 </parent>16 <depende Ncies>17 <dependency>18 <groupid>org.springframework.boot</groupid>19 <artifactid>spring-boot-starter-web≪/artifactid>20 </dependency>21 <dependency>22 <groupid>org.springframe work.boot</groupid>23 <artifactid>spring-boot-starter-data-jpa</artifactid>24 </d ependency>25 <dependency>26 <groupid>com.h2database</groupid>27 <a rtifactid>h2</artifactid>28 <scope>runtime</scope>29 </dependency>30 &L T;/dependencies>31 </project>
If you need to view the generated SQL statements in the console, you can add/src/main/resources/application.properties
1 spring.h2.console.enabled=true2 Logging.level.org.hibernate.sql=debug
(2) Adding entities
Add user, Role, category, and post entities.
User:
1 package simple.domain; 2 3 Import java.util.*; 4 5 Import javax.persistence.*; 6 7 @Entity 8 public class User {9 @Id10 @GeneratedValue11 private Long id;12 private String UserName ; the private string password;16. email;18 @javax. Persistence.version20 Private Long Version;21 @ManyToMany (cascade = cascadetype.all) Private list<role> roles = new Arraylist<role> ( ), Public Long getId () {id;27}28, public void setId (Long id) {this.id = i d;31}32 public String getusername () {return username;35}36 notoginseng public void Setusername (stri ng userName) {this.username = username;39}40-Public String GetPassword () {Passwor d;43}44 public void SetPassword (String password) {This.password = password;47}48 String Getemail () {email;51}52 53public void Setemail (String email) {e-mail = email;55}56, public list<role> getroles () {58 Return roles;59}60, public void Setroles (list<role> roles) {this.roles = roles;63}64 70 Public long GetVersion () {version;67 return,}68, public void setversion (Long Version) Version = version;71}72}
View Code
Role:
1 package simple.domain; 2 3 import java.util.*; 4 5 import javax.persistence.*; 6 7 @Entity 8 public class Role {9 @Id10 @Gen EratedValue11 Private Long id;12 rolename;14 @ManyToMany (cascade = cascadetype.all) 16 Private list<user> users = new arraylist<user> (); public Long getId () { return id;20< c12/>}21 public void SetId (Long id) { this.id = id;24 }25 -Public String getrolename () {27
return rolename;28 }29 -public void Setrolename (String roleName) { this.rolename = rolename;32 }33 public list<user> getusers () { }37 users;36 setusers List<user> users) { this.users = users;40 }41}
View Code
Category:
1 package simple.domain; 2 3 import java.util.*; 4 5 import javax.persistence.*; 6 7 @Entity 8 public class Category {9 @Id10 @GeneratedValue11 Private Long id;12- private String name;14 @OneToMany16 Private List<post > posts = new arraylist<post> (); n-Public Long getId () { return id;20 }21 n void SETID (Long id) { this.id = id;24 }25-Public String GetName () { return name;28 }29 30
public void SetName (String name) { = = name;32 }33 public list<post> getposts () { return posts;36 }37 -public void setposts (list<post> posts) {this.posts = posts;40 }41}
View Code
Post:
1 package simple.domain; 2 3 Import java.util.*; 4 5 Import javax.persistence.*; 6 7 @Entity 8 public class Post {9 @Id10 @GeneratedValue11 private Long id;12 private String name;14 The private string html;16-private string text;18 private Date createat;20 @ManyToOne22 privat E Category category;23 public Long getId () {id;26}27-public void setId (Long id) {29 This.id = id;30}31 The public String getName () {return name;34}35 * public void Setnam E (String name) {PNS name = name;38}39-Public String gethtml () {html;42}43 44 public void sethtml (string html) {html = html;46}47-Public String GetText () {return Tex T;50}51-public void SetText (String text) {text = text;54}55-Public Date getcreateat () { createat;58 return}59 public void SETCREateat (Date createat) {createat = createat;62}63 public Category getcategory () {D-return C ategory;66}67-public void setcategory (category category) {this.category = category;70}71}
View Code
(3) Adding a resource library
Add Userrepository, Rolerepository, Categoryrepository, and postrepository interfaces without implementation.
Userrepository:
1 package simple.repository;2 3 Import org.springframework.data.repository.*;4 5 import simple.domain.*;6 7 public Interf Ace Userrepository extends Crudrepository<user, long> {8 9}
Rolerepository
1 package simple.repository;2 3 Import org.springframework.data.repository.*;4 5 import simple.domain.*;6 7 public Interf Ace Rolerepository extends Crudrepository<role, long> {8 9}
Categoryrepository
1 package simple.repository;2 3 Import org.springframework.data.repository.*;4 5 import simple.domain.*;6 7 public Interf Ace Categoryrepository extends Crudrepository<category, long> {8 9}
Postrepository
Package Simple.repository;import org.springframework.data.repository.*;import simple.domain.*;p ublic interface Postrepository extends Crudrepository<user, long> {}
(4) Inject the repository interface into the controller
1 package Simple.controller; 2 3 import org.springframework.beans.factory.annotation.*; 4 import Org.springframewo rk.web.bind.annotation.*; 5 6 Import simple.repository.*; 7 8 @RestController 9 public class HomeController {Ten private userrepository userrepository;12 private Rolerep Ository rolerepository;13 Private categoryrepository categoryrepository;14 private postrepository postReppository; @Autowired17 public HomeController (userrepository userrepository, Rolerepository rolerepository,18 Categoryrepository categoryrepository, Postrepository postreppository) {this.userrepository = UserRepository ; this.rolerepository = rolerepository;21 this.categoryrepository = categoryrepository;22 THIS.P Ostreppository = postreppository;23}24 @RequestMapping ("/") "Public Long Index" () {+-return US Errepository.count ();}30}
Apply annotations on a method when using transactions @transactional
3. Add authentication and authorization support
(1) Add spring-boot-starter-security dependency
1 <?xml version= "1.0" encoding= "UTF-8"?> 2 <project xmlns= "http://maven.apache.org/POM/4.0.0" xmlns:xsi= " Http://www.w3.org/2001/XMLSchema-instance "3 xsi:schemalocation=" http://maven.apache.org/POM/4.0.0/http Maven.apache.org/xsd/maven-4.0.0.xsd "> 4 <modelVersion>4.0.0</modelVersion> 5 <groupid>com.ex Ample</groupid> 6 <artifactId>myproject</artifactId> 7 <version>0.0.1-snapshot</version > 8 <properties> 9 <java.version>1.8</java.version>10 </properties>11 <p Arent>12 <groupid>org.springframework.boot</groupid>13 <artifactid>spring-boot-starte r-parent</artifactid>14 <version>1.3.1.release</version>15 </parent>16 <depende Ncies>17 <dependency>18 <groupid>org.springframework.boot</groupid>19 <artifactid>spring-boot-starter-web≪/artifactid>20 </dependency>21 <dependency>22 <groupid>org.springframe work.boot</groupid>23 <artifactid>spring-boot-starter-data-jpa</artifactid>24 </d ependency>25 <dependency>26 <groupid>com.h2database</groupid>27 <a rtifactid>h2</artifactid>28 <scope>runtime</scope>29 </dependency>30 <dependency>31 <groupid>org.springframework.boot</groupid>32 <artifactId> ; spring-boot-starter-security</artifactid>33 </dependency>34 </dependencies>35 </project& Gt
(2) Modify Application.java
1 package simple; 2 3 Import org.springframework.boot.*; 4 Import org.springframework.boot.autoconfigure.*; 5 Import Org.springframework.context.annotation.Bean; 6 Import org.springframework.security.config.annotation.method.configuration.*; 7 Import org.springframework.security.config.annotation.web.builders.HttpSecurity; 8 Import Org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; 9 Import org.springframework.security.web.authentication.savedrequestawareauthenticationsuccesshandler;10 11 Import simple.controller.*;12 @EnableAutoConfiguration14 @EnableGlobalMethodSecurity (securedenabled = True, Prepostenabled = True) public class application {18-public static void main (string[] args) throws Exception Springapplication.run (new object[] {application.class, homecontroller.class}, args);}20 @Bean22 Public Websecurityconfigureradapter Websecurityconfigureradapter () {return new MYWEBSECURITYCOnfigurer ();}25 public static class Mywebsecurityconfigurer extends Websecurityconfigureradapter {27 @Override28 protected void Configure (Httpsecurity http) throws Exception {http.csrf (). disable (); 30 Http.authorizerequests (). Antmatchers ("/account**", "/admin**"). authenticated (); Http.formlogin ( ). Usernameparameter ("UserName"). Passwordparameter ("password"). LoginPage ("/login"). Loginprocessingur L ("/login"). Successhandler (New Savedrequestawareauthenticationsuccesshandler ()). and (). Logout (). Logo Uturl ("/logout"). Logoutsuccessurl ("/"); Http.rememberme (). Remembermeparameter ("RememberMe"); 35 36}3 7}38}
Access Http://localhost:8080/account will automatically jump to the login login page. The specific use of Spring security has already been described in the previous article.
Reference:
(1) Https://github.com/spring-projects/spring-boot
(2) http://projects.spring.io/spring-boot/
Java Web series: Spring Boot Basics (RPM)