1.創建一個基於maven的空的java項目
file–>new–>maven
填寫項目信息
創建好項目後的工程目錄結構:
接下來我們就需要構建我們的項目結構啦!在java下新建一些項目需要的包,和以前的ssm框架不同的地方是,我們新建了一個configuration包,這個包主要用於存放項目的配置類。就像ssm框架下我們要寫很多xml配置文件來配置spring、spring-mvc、mybatis一樣,spring boot也需要配置spring以及相關的dao層接口路徑等,但spring boot的好處在於我們不用去寫那些複雜的配置文件,而是用java類+註解的方式去配置。
接下來,我們就先來寫一個最簡單的demo,也是官方提供的一個最簡單的例子,寫一個SimpleController類,運行主函數,在瀏覽器中顯示“hello world!”
SimpleController類代碼:
package com.wang.web.controller;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@EnableAutoConfiguration
public class SimpleController {
@RequestMapping("/")
@ResponseBody
String home(){
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SimpleController.class,args);
}
}
在運行main函數之前呢,我們還需要配置tomcat端口,這裏spring boot強大的地方又體現出來了,spring boot裏內嵌了tomcat插件,因此我們不用像以前用ssm框架一樣還要去在idea裏配置tomcat服務器。在resources下新建一個application.properties在裏面配置我們的端口信息
server.port=8888
server.tomcat.uri-encoding=utf-8
現在就可以運行main函數啦,在地址欄輸入localhost:8888,就可以看到“hello world!”啦!
2.跑一個spring boot 小demo,主要實現在地址欄加上name信息,能夠查詢數據庫中的信息,顯示出該name用戶的所有信息(id,name,password)
先要再添加一些項目運行需要的依賴,例如:MySQL連接驅動 以及Spring Data JPA,thymeleaf模板引擎。在pom.xml裏添加如下:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>1.4.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>1.5.1.RELEASE</version>
</dependency>
因爲需要用到數據庫,所以我們需要在application.properties裏配置數據庫信息。
#配置數據庫信息
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/ssm?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=980321
接下來需要配置Spring Data JPA。
Spring Data JPA : 致力於減少數據訪問層 (DAO) 的開發量, 開發者唯一要做的就只是聲明持久層的接口,其他都交給 Spring Data JPA 來幫你完成!
#配置Spring Data JPA
#數據庫類型爲mysql
spring.jpa.database=MYSQL
#日誌信息打印具體執行的SQL語句
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
# 表更新策略、java類到數據庫字段的映射規則
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
寫一個Admin實體類
package com.wang.web.entity;
import javax.persistence.*;
//這裏用到了Hibernate自動生成數據庫表策略,會在數據庫的admin表中自動生成id、name、password字段名
@Entity
@Table(name = "admin")
public class Admin {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String name;
private String password;
public Admin() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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;
}
}
接下來需要寫接口來實現對數據的操作
新建AdminRepositoty.java接口文件
package com.wang.web.repository;
import com.wang.web.entity.Admin;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
@Repository
public interface AdminRepository extends JpaRepository<Admin,Long> {
@Query("select t from Admin t where t.name = :name")
Admin findAdminByName(@Param("name") String name);
}
編寫service層業務代碼,新建AdminService類:
package com.wang.web.service;
import com.wang.web.entity.Admin;
import com.wang.web.repository.AdminRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class AdminService {
@Autowired
private AdminRepository adminRepository;
public Admin findAdminByName(String name) {
Admin admin = null;
try {
admin = adminRepository.findAdminByName(name);
}catch (Exception e){}
return admin;
}
}
然後就是編寫controller層啦,新建AdminController類,提供兩個接口,/admin/index 返回頁面,/admin/show返回數據。
package com.wang.web.controller;
import com.wang.web.entity.Admin;
import com.wang.web.service.AdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping(value = "/admin")
public class AdminController {
@Autowired
private AdminService adminService;
@RequestMapping(value = "/index")
public String index() {
return "admin/index";
}
@RequestMapping(value = "/show")
@ResponseBody
public String show(@RequestParam(value = "name")String name){
Admin admin = adminService.findAdminByName(name);
if (null!=admin){
return admin.getId()+"/"+admin.getName()+"/"+admin.getPassword();
}
else return "null";
}
}
因爲在controller寫的頁面返回,所以需要在application.properties中配置頁面信息
#配置視圖層
spring.mvc.view.prefix=classpath:/templates/
spring.mvc.view.suffix=.html
在resource目錄下新建templates目錄,在templates目錄下新建admin目錄,在admin目錄下新建一個測試頁面,index.html,用於測試頁面訪問。
<!DOCTYPE html>
<html lang="en">
<head>
<!--最開始這樣寫<meta charset="UTF-8">,報錯org.xml.sax.SAXParseException: 元素類型 "meta" 必須由匹配的結束標記 "</meta>" 終止。-->
<meta charset="UTF-8"/>
<title>Title</title>
</head>
<body>
<h1>測試</h1>
</body>
</html>
接下來我們需要配置JPA,在configuration包下新建一個JpaConfiguration類,編寫項目配置信息
package com.wang.web.configuration;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.transaction.annotation.EnableTransactionManagement;
//JPA配置類
@Order(Ordered.HIGHEST_PRECEDENCE)
@Configuration
@EnableTransactionManagement(proxyTargetClass = true)
@EnableJpaRepositories(basePackages = "com.wang.web.repository")
@EntityScan(basePackages = "com.wang.web.entity")
public class JpaConfiguration {
@Bean
PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor(){
return new PersistenceExceptionTranslationPostProcessor();
}
}
最後編寫項目進入點,新建Enter類
package com.wang.web.configuration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
//項目啓動入口,配置包根路徑
@SpringBootApplication
@ComponentScan(basePackages = "com.wang.web")
public class Enter {
public static void main(String[] args) throws Exception {
SpringApplication.run(Enter.class, args);
}
}
接下來運行main函數,在地址欄訪問localhost:8000/admin/index(這裏我把前面設置的端口改成了8000),訪問結果
地址欄訪問:locahost:8000/admin/show?name=admin,顯示數據
以上學習內容來自:IDEA下從零搭建spring boot項目