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>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
添加必要的jar包,一切和spring有关的包都不需要版本号,springcloud会给你选择他最稳定的版本。而spring-boot-maven-plugin更是非常的强大,他提供了很多方便的功能。
- 它收集类路径上的所有jar,并构建一个可运行的“über-jar”,这样可以更方便地执行和传输您的服务。
- 他会定位public static void main()方法来标记为可运行类。
- 他会为你默认选择jar包的版本号。
创建一个get请求
创建一个get请求,并且有一个可选的参数name,请求的结果中会返回一个json数据,就像这个样子
{
"id": 1,
"content": "Hello, World!"
}
- 1
- 2
- 3
- 4
创建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;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
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;
@RestController
public 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));
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
这个控制器看似非常的简单,但是我们慢慢来变化他。 @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;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
@SpringBootApplication
这个注释其实也是又好几个注释组合而成的。
1. @Configuration将该类标记为应用程序上下文的bean定义的源
2. @EnableAutoConfiguration指示Spring Boot根据类路径设置,其他bean和各种属性设置开始添加bean
3. @ComponentScan告诉Spring在hello包中查找其他组件,配置和服务,让它找到控制器
而且你也注意到了,我们再也不需要所谓的web.xml文件来保证项目的启动了SpringApplication.run方法能让我们的项目完美的启动,我们也不会去考虑404这些情况了,所谓的配置错误,滚蛋吧。运行main方法,我们就能看到我们的项目正确执行了,接下来方位
http://localhost:8080/greeting
- 1
结果如下:
{"id":1,"content":"Hello, World!"}
- 1
如果是get的请求加参数
http://localhost:8080/greeting?name=User
- 1
结果是
{"id":2,"content":"Hello, User!"}
- 1
小结
如果你发现id从1变成了2,说明我们的项目一直是很好的运行的。通过这一章的认识,我们了解了@RestController,@RequestMapping,@RequestParam,
@SpringBootApplication,并且知道了如何运用springcloud启动一个项目,而不用配置web.xml文
相关推荐
spring cloud 微服务helloworld项目,适合新手,项目基于spring cloud 微服务技术,使用了eureka注册公司,configserver配置中心,项目需要在本地新建配置中心配置文件
1. 先配置 nacos server 2. 启动 ProviderApplication.java类 3. 启动 ConsumerApplication.java类 4. 浏览器中输入 http://localhost:8082/say/hello
Spring Cloud是一个强大的框架,用于构建分布式系统,如微服务架构,而Nacos是阿里巴巴开源的动态配置、服务发现和远程调用平台,Feign则是一个声明式Web服务客户端。 首先,我们需要理解Spring Cloud Nacos的核心...
Spring框架是Java开发中广泛使用的轻量级框架,它以其依赖...学习和理解"Spring4 HelloWorld",不仅能够帮助初学者掌握Spring的基本用法,也为进一步深入学习Spring的其他高级特性,如AOP、MVC、JPA等打下坚实基础。
本示例程序"cloud-helloworld"是一个入门级的项目,旨在帮助初学者理解和实践基于Java的云应用程序开发,特别是结合了Spring Cloud和Spring Boot框架。这两个框架在企业级微服务架构中广泛使用,为开发者提供了强大...
在"Spring第一个HelloWorld"的例子中,我们将学习如何创建一个简单的Spring应用,通过DI来管理对象的生命周期和相互依赖关系。 首先,我们需要创建一个Java类,例如`HelloWorld`,这个类将包含一个方法,如`...
本文将深入探讨如何利用Spring框架输出“HelloWorld”,并介绍相关的基础知识。 首先,Spring是一个开源的Java平台,它为创建复杂的、模块化的、松耦合的Java应用程序提供了强大的支持。它的核心特性包括依赖注入...
spring配置文件、配置文件读取、helloworld,自学一二三笔记demo,直接运行参考学习。
本节我们将探讨SpringData的概述以及如何通过一个简单的"HelloWorld"示例来入门。 SpringData的核心目标是通过减少样板代码,使数据访问更加简单、高效。它支持多种数据存储技术,包括JPA(Java Persistence API)...
本示例DEMO "Spring的AOP示例DEMO HELLOWORLD" 将引导我们深入理解Spring AOP的核心概念,并通过一个简单的 HelloWorld 示例来展示其实现过程。 首先,面向切面编程(AOP)是一种编程范式,旨在提高代码的可维护性...
2. **编写服务接口和实现**:定义服务接口及其实现,例如一个简单的“Hello World”服务,然后通过@RestController注解暴露RESTful API。 3. **注册服务到Eureka**:启动服务提供者后,它会自动向Eureka Server注册...
Spring Boot学习笔记-------(二)spring boot入门,配套例子代码,博客地址:https://blog.csdn.net/huaya1127/article/details/104130300
《我的Pro Spring 学习笔记 之一:Say Hello World in Spring Way》 Spring框架是Java开发中的一个核心组件,尤其在企业级应用中占据主导地位。这篇学习笔记将引导我们踏入Spring的世界,通过一个简单的“Hello ...
Spring3MVC-REST-HelloWorld 是一个基础的示例,用于展示如何在Spring框架的MVC模块中实现RESTful Web服务。这个实例是初学者理解Spring MVC与REST结合使用的理想起点。REST(Representational State Transfer)是一...
在Eclipse这个强大的Java集成开发环境中,创建一个Spring框架的HelloWorld程序是学习Spring入门的典型步骤。这个程序展示了如何在Eclipse中配置Spring环境,编写简单的Bean定义,并通过Spring的IoC(Inversion of ...
第一次共享自己的代码,Spring Hello World。代码比较简单,适合初学者,入门使用。高手就不要下载。呵呵。
"Hello World"是任何编程语言入门的第一个示例,对于Spring Boot也不例外。下面我们将深入探讨Spring Boot创建"Hello World"应用的关键知识点。 1. **起步依赖(Starter Dependencies)** Spring Boot的特性之一是...
这个简单的程序通常只包含一行代码,用于在控制台上打印出 "Hello, World!" 这个字符串。在这个场景中,我们看到的"HelloWorld_helloworld_"可能是某种编程教程或示例项目的名称,它似乎旨在展示如何在不同情况下...