spring cloud初学者--简单的web项目
来源:互联网 发布:安卓高清电视直播软件 编辑:程序博客网 时间:2024/05/29 13:09
spring cloud是这几年新兴的微服务框架,虽然现在的微服务框架很多,但是spring cloud还是被认为最好的微服务框架,尽管我也不知道为什么这么说,但是接下来我准备一点一点的探究,今天就是开始的第一步,大家可以一点一点的通过一个小小的例子,来看看为什么他被称为最好的微服务框架
Web项目
具体的虽然我不是很明白,但是我们先通过一个简单的例子来看看spring cloud是什么样子的吧。
创建maven项目
pom文件
<?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>org.springframework</groupId> <artifactId>gs-rest-service</artifactId> <version>0.1.0</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.jayway.jsonpath</groupId> <artifactId>json-path</artifactId> <scope>test</scope> </dependency> </dependencies> <properties> <java.version>1.8</java.version> </properties> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-releases</id> <url>https://repo.spring.io/libs-release</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-releases</id> <url>https://repo.spring.io/libs-release</url> </pluginRepository> </pluginRepositories></project>
添加必要的jar包,一切和spring有关的包都不需要版本号,springcloud会给你选择他最稳定的版本。而spring-boot-maven-plugin更是非常的强大,他提供了很多方便的功能。
- 它收集类路径上的所有jar,并构建一个可运行的“über-jar”,这样可以更方便地执行和传输您的服务。
- 他会定位public static void main()方法来标记为可运行类。
- 他会为你默认选择jar包的版本号。
创建一个get请求
创建一个get请求,并且有一个可选的参数name,请求的结果中会返回一个json数据,就像这个样子
{ "id": 1, "content": "Hello, World!"}
创建pojo类
id是唯一标识符,content是返回的内容,首先创建一个简单的类,有id和content两个字段,有一个构造函数
src/main/java/hello/Greeting.java
package hello;public class Greeting { private final long id; private final String content; public Greeting(long id, String content) { this.id = id; this.content = content; } public long getId() { return id; } public String getContent() { return content; }}
springboot自动使用jackson,他会吧Greeting转换成json格式的字符串。
创建controller
在spring中构建restful的web服务,http请求由controller处理,而springcloud可以轻松的通过@RestController来识别,下面的GreetingController通过返回Greeting类的新实例来处理GET请求/ greeting
package hello;import java.util.concurrent.atomic.AtomicLong;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class GreetingController { private static final String template = "Hello, %s!"; private final AtomicLong counter = new AtomicLong(); @RequestMapping("/greeting") public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) { return new Greeting(counter.incrementAndGet(), String.format(template, name)); }}
这个控制器看似非常的简单,但是我们慢慢来变化他。 @RequestMapping
来确保访问的方法正确的映射到greeting方法,但是细心的你发现为什么没有post,get请求,其实@RequestMapping
默认允许所有的http请求,我们只需要@RequestMapping(method=GET)
来制定需要的请求。 @@RequestParam
绑定了参数的name,这样我们在参数中输入name的参数的时候就可以制定该方法的name,此查询字符串参数被明确标记为可选(默认情况下为required = true):如果请求中不存在,则使用“World”的defaultValue。而返回值很简单,id就是一个计数器的下一个值,并且返回格式化的content,
传统的mvc和springcloud的不同就是相应主体的区别,我们不管学习springmvc,还是struts,都有一个view这么个概念,他会是主体,然后然会给html,但是在这里,
这个RESTful Web服务简单的填充以后就可以返回给html的json对象
代码用到了spring4.*的@RestController
的注解,这个注解其实就是@Controller
和@ResponseBody
的结合体.并且spring会自动的利用 MappingJackson2HttpMessageConverter来转化Greeting实体到json
运行你的程序
非常简单的方法创建一个独立的应用程序。并且我们默认发布到springboot支持的tomcat上边。
package hello;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }}
@SpringBootApplication
这个注释其实也是又好几个注释组合而成的。
1. @Configuration将该类标记为应用程序上下文的bean定义的源
2. @EnableAutoConfiguration指示Spring Boot根据类路径设置,其他bean和各种属性设置开始添加bean
3. @ComponentScan告诉Spring在hello包中查找其他组件,配置和服务,让它找到控制器
而且你也注意到了,我们再也不需要所谓的web.xml文件来保证项目的启动了SpringApplication.run方法能让我们的项目完美的启动,我们也不会去考虑404这些情况了,所谓的配置错误,滚蛋吧。运行main方法,我们就能看到我们的项目正确执行了,接下来方位
http://localhost:8080/greeting
结果如下:
{"id":1,"content":"Hello, World!"}
如果是get的请求加参数
http://localhost:8080/greeting?name=User
结果是
{"id":2,"content":"Hello, User!"}
小结
如果你发现id从1变成了2,说明我们的项目一直是很好的运行的。通过这一章的认识,我们了解了@RestController,@RequestMapping,@RequestParam,
@SpringBootApplication,并且知道了如何运用springcloud启动一个项目,而不用配置web.xml文
- spring cloud初学者--简单的web项目
- spring cloud初学者-mongodb
- spring cloud初学者-spring-kafka
- spring cloud初学者--使用数据库
- spring的一些顶级子项目及spring cloud简单介绍
- 搭建一个基础的Spring Cloud项目
- 史上最简单的SpringCloud教程 | 第十一篇: docker部署spring cloud项目
- 史上最简单的SpringCloud教程 | 第十一篇: docker部署spring cloud项目
- 史上最简单的SpringCloud教程 | 第十一篇: docker部署spring cloud项目
- 史上最简单的SpringCloud教程 | 第十一篇: docker部署spring cloud项目
- 史上最简单的SpringCloud教程 | 第十一篇: docker部署spring cloud项目
- 史上最简单的SpringCloud教程 | 第十一篇: docker部署spring cloud项目
- spring cloud-学习之路(一):搭建一个简单的Springboot项目
- 史上最简单的SpringCloud教程 | 第十一篇: docker部署spring cloud项目
- Spring Cloud简单介绍
- spring cloud 简单介绍
- spring cloud 简单使用
- Spring Cloud 子项目
- [LeetCode] 216. Combination Sum III
- 虚拟机的三种网络连接方式
- Js倒计时函数
- UPNP协议(超详细)--客户端之一简介
- Java中TreeSet类Demo
- spring cloud初学者--简单的web项目
- spring-boot使用教程之三:如何使用sts中的热部署来降低代码开发量
- 九度1468
- Makefile中的$(addprefix)
- 从RCNN到Faster RCNN的原理剖析
- Git命令
- 设计模式(三)strategy
- 几种主要的分布
- RNN Sequence Labeling