Spring Cloud 入门(1)-- 第一个 Kotlin 微服务
来源:互联网 发布:搞笑视频配音软件 编辑:程序博客网 时间:2024/05/23 23:49
最近公司需要使用 Spring Cloud 开发后台应用,为了以后能够看懂后台代码,所以决定学习一下 Spring Cloud。对于Spring Cloud和微服务的介绍,各位自行网上搜索吧。本系列文章是入门级别的学习文章,最终的目的就是入门,想要深入学习,请不要看本系列文章。
由于本人不是后端开发,能力有限,文章难免出错,如果出现错误,还请留言指出。
1 工具
本系列使用的工具为 Intellij idea,Spring Cloud 版本为 Edgware.RELEASE。
2 目标
本文使用 Spring boot 创建一个简单的用户微服务,对外能够查询用户信息。
3 Spring Boot
Spring Boot 确切的来说不算是Spring Cloud 中的一员,但是对于以Spring 为基础搭建的微服务,它是一个重要的组成部分。原来搭建服务的时候,基本上都是编写好代码,达成war包,然后部署到 Web 容器当中,步骤繁琐。Spring Boot 简化了这个步骤,它将程序和 Web 容易一起大成一个 jar 包,然后使用命令就能够启动这个 jar 包。这样一个服务就搭建起来了,比原来方便多了。另外 Spring Boot 里面集成了许多 Spring 的东西,例如 Spring MVC,所以 Spring MVC 原来的注解基本都可以使用。
4 创建用户微服务
4.1 创建项目
使用Idea,点击 File -> New -> Spring Initializr,这里默认就好,点击 Next,输入对应的信息,这里语言选择 kotlin,ArtifactId 为 user-service(这里可以不一致,最好一致,因为后面也会用到)。点击 Next, 选择第一列 Web,第二列 选中 Web,然后Next,选择存储地址,点击 Finish 保存。
这时候开始下载依赖的包。下载完成后打开对应的 pom.xml 类似如下(一部分解释放在注释上):
<?xml version="1.0" encoding="UTF-8"?><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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>io.mshare.study</groupId> <artifactId>user-service</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>user-service</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <kotlin.compiler.incremental>true</kotlin.compiler.incremental> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <kotlin.version>1.1.61</kotlin.version> <!-- kotlin 版本--> </properties> <dependencies> <dependency> <!--这个是spring boot 的依赖包,如果没有可以手动添加--> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--下面这两个都是 kotlin 依赖的东西 保持原状就好了--> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-stdlib-jre8</artifactId> <version>${kotlin.version}</version> </dependency> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-reflect</artifactId> <version>${kotlin.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory> <testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!-- 这个是kotlin 编译相关的插件 如果使用java 语言不需要--> <plugin> <artifactId>kotlin-maven-plugin</artifactId> <groupId>org.jetbrains.kotlin</groupId> <version>${kotlin.version}</version> <configuration> <compilerPlugins> <plugin>spring</plugin> </compilerPlugins> <jvmTarget>1.8</jvmTarget> </configuration> <executions> <execution> <id>compile</id> <phase>compile</phase> <goals> <goal>compile</goal> </goals> </execution> <execution> <id>test-compile</id> <phase>test-compile</phase> <goals> <goal>test-compile</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-allopen</artifactId> <version>${kotlin.version}</version> </dependency> </dependencies> </plugin> </plugins> </build></project>
4.2 创建实体类
添加 entity package,然后创建 User 类,该类即为程序中用到的Entity类,Kotlin 中提供了 data class 的概念,这里可以使用它。在与 JPA 结合的时候需要添加一些注解,注释的代码是与 JPA 结合的例子。由于本文重点不是 JPA,所以就当做普通的Model 类使用即可。
package io.mshare.study.userservice.entityimport java.math.BigDecimal/* 这个是配合 jpa 使用的时候,data class 声明的方式 *//*@Entitydata class User(@Id @GeneratedValue(strategy = GenerationType.AUTO) val id: Long = 0, @Column val username: String = "", @Column val name: String = "", @Column val age: String ="", @Column val balance: BigDecimal = BigDecimal.ZERO) */data class User(val id: Long = 0, val username: String = "", val name: String = "", val age: Int =0, val balance: BigDecimal = BigDecimal.ZERO)
4.3 创建控制类
在 Spring 开发的过程中,经常使用 Controller 表示对外提供接口的类,使用 Service 表示业务的处理,使用 DAO 表示数据访问层,使用 Entity 表示数据模型。由于本文是简单入门,没有必要都具备,所以只是谢了 Controller。添加 controller package,然后创建 UserController。
其中使用 @RestController 表示这个 Controller 被 Spring 管理,另外能够提供 Web 服务。方法 findById 使用 @GetMapping 注解,表示提供 Get 服务。其中配置 “/{id}”,表示路径中 id,会被映射成方法中 @PathVariable 的参数 id。关于 Spring MVC 的注解还有很多,有兴趣的可以看看文档。
package io.mshare.study.userservice.controllerimport io.mshare.study.userservice.entity.Userimport org.springframework.web.bind.annotation.GetMappingimport org.springframework.web.bind.annotation.PathVariableimport org.springframework.web.bind.annotation.RestControllerimport java.math.BigDecimal// 这里模拟只有一个用户 实际项目中应该去查找数据库val userMap = mapOf<Long, User>(1L to User(1, "account1", "张三", 20, BigDecimal(234)))@RestControllerclass UserController { @GetMapping("/{id}") fun findById(@PathVariable id: Long): User? { val user = userMap[id] return user }}
4.4 修改配置文件
修改工程 resource 目录下的 application.properties 为 application.yml。这里推荐使用 yml 配置工程,两者功能一样,只是在格式上有差别,当配置项层级多的时候,yml 会更加清晰。下面给出相同配置的两个版本。
本例子只需要配置服务端口和名称就好了。
application.properties
server.port=9000spring.application.name=user-service
application.yml
server: port: 9000spring: application: name: user-service
4.5 启动服务
找到 UserServiceApplication.kt,然后执行 main 方法,这样我们额 user service 就启动起来了。
我们注意到 UserServiceApplication 上有注解 @SpringBootApplication, 这个注解标志着启动的类。
package io.mshare.study.userserviceimport org.springframework.boot.SpringApplicationimport org.springframework.boot.autoconfigure.SpringBootApplication@SpringBootApplicationclass UserServiceApplicationfun main(args: Array<String>) { SpringApplication.run(UserServiceApplication::class.java, *args)}
控制台输出了启动中的日志,其中能够看到 Tomcat started on port(s): 9000 (http),没有报错,说明启动成功了。
4.6 测试
在浏览器中输入 http://localhost:9000/1, 输出如下,说明服务正常:
{ "id": 1, "username": "account1", "name": "张三", "age": 20, "balance": 234}
5 总结
本文只是 Spring Boot 的入门文章,文中涉及到配置都尽量简化,以求快速上手的目的。建议有兴趣的人认真看一下官方文档。此外文中使用的是 Kotlin,如果对 Kotlin 不熟悉,可以看看官方文档中文版入个门。
源码:http://download.csdn.net/download/mengxiangyue/10148662
- Spring Cloud 入门(1)-- 第一个 Kotlin 微服务
- Spring Cloud与微服务学习总结(1)——Spring Cloud及微服务入门
- 学习spring cloud第一课(微服务架构概述)
- 学习spring cloud第一课(微服务架构概述)
- Spring Cloud微服务(1)之 Spring Boot
- Spring Cloud微服务
- spring cloud 微服务
- Spring Cloud 微服务示例
- Spring Cloud构建微服务
- 微服务框架-Spring Cloud
- 微服务Spring Cloud例子
- 微服务与Spring Cloud
- 微服务与Spring Cloud
- spring cloud 微服务架构
- 微服务架构(spring-cloud)
- 一、Spring Cloud 微服务
- Spring Cloud微服务 浅谈
- Spring Cloud 快速入门esclipse快速搭建微服务框架 (一)-注册与发现
- windows环境下使用TPC-H生成数据集
- 蓝桥杯练习题之十进制转十六进制
- “戏”说spark---spark Shuffle详解(一)
- JavaScript开发工具简明历史
- 旋转 图片
- Spring Cloud 入门(1)-- 第一个 Kotlin 微服务
- [Git]Git 的 4 个阶段的撤销更改
- The basic of Java
- Merge Two Binary Trees 解法
- 进程丶线程丶CPU关系简述
- C语言实现三次样条插值
- windows 部署常见问题
- Java练习题22 成绩排序
- TSM12M触摸芯片注意事项