一直用SpringMVC+Spring開發,雖然用了這么久,但對里面繁瑣的配置還是很頭疼,這種情況改用Springboot,無疑是個很好的選擇。廢話不多說,直接介紹自己如何使用的,在這之前還是有必要介紹下接下來的這個案例,這是一個入門級的Springboot應用案例,實現訪問一個測試接口,獲取到數據庫中數據。 第一步:首先創建一個簡單的MAVEN工程,這里也可以用IDEA上的MAVEN模版(maven-archetype-webapp)。然后就是在pom.xml中引入Springboot相關的依賴,這里先默認繼承spring-boot-starter-parent(實際項目往往需要定義自己的)。
<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/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.zyk</groupId><artifactId>testSpringboot</artifactId><packaging>war</packaging><version>1.0-SNAPSHOT</version><name>testSpringboot Maven Webapp</name><url>http://maven.apache.org</url><!--繼承默認的spring boot--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.6.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.7</java.version><maven.build.timestamp.format>yyyyMMdd</maven.build.timestamp.format></properties><dependencies><!-- Spring Boot JPA 連接數據庫--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--Spring Boot的核心啟動器,包含了自動配置、日志和YAML--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><!--支持全棧式Web開發,包括Tomcat和spring-webmvc--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--使用log4j來進行日志記錄--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j</artifactId><version>1.3.8.RELEASE</version></dependency><!--json相關--><dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version><classifier>jdk15</classifier></dependency><!--springboot項目測試相關--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><!--打包成一個可以直接運行的 JAR 文件--><build><finalName>testSpringboot</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>
這里使用的是JPA連接數據庫,數據庫是mySql,數據庫配置在application.properties中
#數據庫配置
spring.datasource.url=jdbc:mysql://192.168.8.189:3306/test
spring.datasource.username=root
spring.datasource.password=root
server.port=8080
#項目訪問路徑
server.context-path=/testSpringboot
使用的log4j來記錄日志,配置文件為log4j.properties
#-------------------------------------------------------------------
log4j.rootCategory=INFO, A1, Daily
#log4j.logger.com.dayangit=DEBUG
log4j.logger.org.hibernate.hql.internal.ast.HqlSqlWalker=ERROR#-------------------------------------------------------------------
#A1 system output
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%d{HH:mm:ss.SSS}] [%t] %m%n#-------------------------------------------------------------------
# Daily
log4j.appender.Daily.encoding=GBK
log4j.appender.Daily=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Daily.File=/testSpringboot/testSpringboot.log
log4j.appender.Daily.DatePattern='.'yyyy-MM-dd
log4j.appender.Daily.layout=org.apache.log4j.PatternLayout
log4j.appender.Daily.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss.SSS}][%t]%m%n
這里還要說一下spring-boot-maven-plugin,這是為了將整個項目打包成可以直接運行的jar包,既然可以直接運行提供接口,也說明了springboot的另一個特性,內部自帶tomcat。 pom.xml完成后,重新加載后就可以了。 第二步:建立需要用到的數據庫表,及數據。上面application.properties中已經規定了數據庫名,在此基礎上新建自己要用到的表及數據。我這里的建表語句是
CREATE TABLE `testspringboot` (`id` VARCHAR(36) NOT NULL,`name` VARCHAR(50) DEFAULT NULL,`text` VARCHAR(2000) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
插入數據
insert into `testspringboot` (`id`, `name`, `text`) values('id1','zyk','哈哈哈哈哈哈哈哈哈哈');
insert into `testspringboot` (`id`, `name`, `text`) values('id2','yjh','呵呵呵呵呵呵呵呵呵呵呵呵');
到此數據庫部分完成。 第三步:建立項目的各個模塊,實現相應的邏輯。我這里就用了四個模塊:bean,controller,service,dao,還有一個特殊的類SpringBootSampleApplication(名字不固定,但是要包含特定的main方法),
package com.zyk.testSpringboot;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** Created by Administrator on 2017\10\19 0019.*/
@SpringBootApplication
public class SpringBootSampleApplication {public static void main(String[] args) {SpringApplication.run(SpringBootSampleApplication.class, args);}
}
我的理解這個類就是springboot的入口,程序的各個模塊需要在這個類的目錄結構的下一級,我的目錄結構如圖: 這里我只創建了一個實體類,對應數據庫中的testspringboot表
package com.zyk.testSpringboot.bean;import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;/*** Created by Administrator on 2017\10\19 0019.*/
@Entity
@Table(name="testspringboot")
public class TestSpringboot {@Idprivate String id;private String name;private String text;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getText() {return text;}public void setText(String text) {this.text = text;}
}
需要提一下的這里的注解,@Entity說明這個class是實體類,并且使用默認的orm規則,如果想改變這種默認的orm規則,就要使用@Table來改變class名與數據庫中表名的映射規則,@Id 注解可將實體Bean中某個屬性定義為主鍵 ,@Table注解后,想要添加表中不存在字段,就要使用@Transient這個注解。 dao模塊我只創建了一個接口:
package com.zyk.testSpringboot.dao;import com.zyk.testSpringboot.bean.TestSpringboot;
import org.springframework.data.repository.CrudRepository;/*** Created by Administrator on 2017\10\19 0019.*/
public interface ShowDaoInterface extends CrudRepository<TestSpringboot,String>{}
這里需要說明的是,通過繼承CrudRepository接口后,我們能夠直接用springboot已經定義好的一些簡單的增刪改查方法。 service模塊就是一個簡單的調用方法,代碼如下:
package com.zyk.testSpringboot.service;import com.zyk.testSpringboot.bean.TestSpringboot;
import com.zyk.testSpringboot.dao.ShowDaoInterface;
import org.springframework.stereotype.Service;import javax.annotation.Resource;/*** Created by Administrator on 2017\10\19 0019.*/
@Service
public class ShowService {@Resourceprivate ShowDaoInterface showDaoInterface;public String getDataById(String id) {TestSpringboot testSpringboot=showDaoInterface.findOne(id);return testSpringboot.getText();}
}
controller模塊代碼如下:
package com.zyk.testSpringboot.controller;import com.zyk.testSpringboot.service.ShowService;
import net.sf.json.JSONObject;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;
import java.util.Collections;
import java.util.HashMap;/*** Created by Administrator on 2017\10\19 0019.*/@RestController
public class ShowController {@Resourceprivate ShowService showService;@GetMapping("/getTextById")public ResponseEntity getText(@RequestParam String id) {if(id!=null) {String text=showService.getDataById(id);JSONObject jsonObject=new JSONObject();jsonObject.put("text",text);return ResponseEntity.ok().body(jsonObject);}else {return ResponseEntity.badRequest().body(Collections.singletonMap("info","參數id為必填項"));}}}
至此,整個項目創建完成,然后就是啟動測試了。 我是用的IDEA,啟動命令 spring-boot:run,在IDEA上配置如圖:
然后直接點擊運行就可以了,記得訪問接口時加上/testSpringboot。
與50位技術專家面對面 20年技術見證,附贈技術全景圖
總結
以上是生活随笔 為你收集整理的Springboot简单应用 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。