您的位置:首页 > 编程语言 > Java开发

Eclipse使用Spring Boot的Restful微服务

2017-05-11 15:38 507 查看

0. 开发环境

  Eclipse:Neon.3 Release(4.6.3)

1. Maven的设置

Maven的设置文件settings.xml做如下修改:
             <localRepository>C:\eclipse\workspace\repository3</localRepository>  :本地仓库的路径,从远程仓库下载的jar包就放在这里。

             <offline>false</offline>:不是离线下载。

 <proxy>:使用上网的代理服务器的设置

      <id>optional</id>

      <active>true</active>

      <protocol>http</protocol>

      <host>192.168.0.1</host>

      <port>8080</port>

 </proxy>

 <mirror>:使用香港的镜像。

       <id>UK</id>

       <mirrorOf>central</mirrorOf>

       <name>UK Central</name>

       <url>http://uk.maven.org/maven2</url>

 </mirror>

单击[Window]-[Preferences],设置[Maven]-[User Settings]为上述修改后settings.xml,并单击[Update Settings]按钮。

 2. 修改pom.xml

<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.peepi.microservice</groupId>
<artifactId>mono</artifactId>
<version>0.0.1-SNAPSHOT</version>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<main.basedir>${basedir}/../..</main.basedir>
</properties>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
</parent>

<dependencies>
<!-- Compile -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>  <!-- 使用的数据库是MySql -->
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

<dependency>  <!-- 使用JDBC访问数据库 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<dependency>  <!-- 使用jpa处理数据 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>

<!-- Test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

</dependencies>

<build>
<plugins>
<plugin>  <!-- jar打包用 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
</plugins>
<finalName>mono.localhost</finalName>
</build>
</project>


3. 更新Maven的依赖库

单击Project的右键菜单[Maven]-[Update Project...],更新Maven依赖库。等ing......

4. 做一个Restful的微服务

Spring Boot针对Restful微服务的注解是[@RestController],请求的注解是[@RequestMapping],响应的注解是[@ResponseBody]。

以下是Controller的例子。

package mono.controller;

import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import mono.dbprocedure.DbProcedureJdbc;
import mono.json.UserToken;
import mono.utility.EncryptionUtility;
import mono.utility.RegularExpression;

@RestController  //这是个Restful的Controller
public class DbController {
@Autowired
private JdbcTemplate jdbcTemplate;
        //URL是[login],方法是POST,数据传输是JSON
@RequestMapping(value = "/login", method = RequestMethod.POST, consumes = "application/json")
@ResponseBody  //有响应。
public UserToken login (@RequestBody Map<String,Object> params) {

UserToken userToken = new UserToken();
userToken.setErrPath("login");
String userId = "";
String passWord = "";
try {
userId = params.get("user").toString();
passWord = params.get("pass").toString();
} catch(Exception e) {
userToken.setAllofValues("", "", "001", "用户登录失败", "login");
return userToken;
}

if (userId.isEmpty() || passWord.isEmpty()) {
userToken.setAllofValues("", "", "002", "用户登录失败", "login");
return userToken;
}

String strToken = "";
try {//以下是用户密码验证的数据库处理,可以删除。
DbProcedureJdbc dbProcedureJdbc = new DbProcedureJdbc(jdbcTemplate);

String message = String.valueOf(System.currentTimeMillis());
String strEncry = EncryptionUtility.SHA512(message);
dbProcedureJdbc.setUserToken(userId, strEncry);
strToken = strEncry;

int passCount = dbProcedureJdbc.getUserPass(userId, passWord);
if (1 != passCount) {
userToken.setAllofValues("", strToken, "003", "用户登录失败", "login");
return userToken;
}

userToken.setAllofValues(userId, strToken, "", "", "login");

} catch(Exception e) {
userToken.setAllofValues(userId, strToken, "999", "内部发生异常: " + e.toString(), "login");
return userToken;
}

return userToken;  //返回响应。Spring Boot会根据UserToken类转换为JSON格式。
}

}


以下是UserToken类。

package mono.json;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(schema="monodb", name="user_token")
public class UserToken implements Serializable {

/**
*
*/
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy= GenerationType.AUTO)
@Column(name="user_id")
private String user;

@Column(name="token_sha512")
private String token;

private String errCode;
private String errMsg;
private String errPath;

public void setUser(String user) {
this.user = user;
}

public String getUser() {
return this.user;
}

public void setToken(String token) {
this.token = token;
}

public String getToken() {
return this.token;
}

public void setErrMsg(String errMsg) {
this.errMsg = errMsg;
}

public String getErrMsg() {
return this.errMsg;
}

public void setErrCode(String errCode) {
this.errCode = errCode;
}

public String getErrCode() {
return this.errCode;
}

public void setErrPath(String errPath) {
this.errPath = errPath;
}

public String getErrPath() {
return this.errPath;
}

public void setAllofValues(String user, String token, String errCode
a1c4
, String errMsg, String errPath) {
this.user = user;
this.token = token;
this.errCode = errCode;
this.errMsg = errMsg;
this.errMsg = errMsg;
}
}


5. Eclipse下启动微服务

将[Maven Build]的[Goals]设置为[spring-boot:run]就可以启动。

6. Spring Boot的发布打包

将[Maven Build]的[Goals]设置为[package],就可以打包。
             以下是打包的log:

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building mono 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ mono ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ mono ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ mono ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Work\T_GUI\eclipse\workspace\mono\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ mono ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ mono ---
[INFO]
[INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ mono ---
[INFO] Building jar: C:\Work\T_GUI\eclipse\workspace\mono\target\mono.localhost.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:1.5.3.RELEASE:repackage (default) @ mono ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.799 s
[INFO] Finished at: 2017-05-11T16:41:04+08:00
[INFO] Final Memory: 21M/181M
[INFO] ------------------------------------------------------------------------


在Project的工作文件夹下的[\target]文件夹下会生成xxxx.jar和xxxx.jar.original。使用这2个文件就可以发布了。
             执行[java -jar xxxx.jar]就可以运行我们做的微服务了。

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息