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]就可以运行我们做的微服务了。
相关文章推荐
- 详解如何使用Jersey客户端请求Spring Boot(RESTFul)服务
- 使用RestTemplate消费spring boot的Restful服务
- 使用SpringBoot开发Restful服务实现增删改查功能
- 使用Jersey客户端请求Spring Boot(RESTFul)服务
- 微服务框架(一)--Eclipse使用maven创建spring boot项目
- SpringBoot系列十一:SpringBoot整合Restful架构(使用 RestTemplate 模版实现 Rest 服务调用、Swagger 集成、动态修改日志级别)
- eclipse 使用maven 构建springboot+dubbo+zookeeper 构建soa服务(面向服务架构)
- 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
- 使用 Spring Boot 快速构建应用服务
- 使用spring boot构建微服务
- 使用Spring Boot创建微服务
- 市长信箱邮件查询服务: 使用SpringBoot搭建基础
- 使用Ratpack和Spring Boot打造高性能的JVM微服务应用
- 使用 Apache Wink、Eclipse 和 Maven 开发 RESTful Web 服务
- 使用Spring构建第一个RESTful服务
- 使用Spring Boot创建微服务
- 使用 Apache Wink、Eclipse 和 Maven 开发 RESTful Web 服务
- 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
- 使用spring boot和thrift、zookeeper建立微服务
- SPRING MVC3.2案例讲解--使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务