Spring Cloud 学习笔记(一)– spring boot

公司用的微服务框架是dubbox(当当团队修改的那个版本),接触不久,整体来说服务挺稳定的,开发也挺快。

spring cloud也是近两年才出现的,目的就是实现分布式系统,微服务,以及相应的服务治理,分布式事务等等延伸开来的问题。spring cloud下面有很多的子项目,基本就是分布式系统的各个子系统和相应解决方案。spring cloud都是基于spring boot的,各个子项目也都是spring boot化了的。

spring cloud都是基于restful风格的,哪怕是服务间的调用都是restful,不像dubbo有不同的协议,而服务间的调用则是用的效率最高的dubbo(二进制传输)协议,spring cloud这样全部restful有好有坏吧。

spring boot旨在快速开发应用,框架使用的是嵌入式的tomcat,减少了配置文件,spring也是可以全部基于注解的(只要你愿意)。而在spring boot中为了快速开发,spring推荐所有的配置文件都放在一个总的项目配置文件中,xml中所有的配置项都可以在这个文件中配置,这个功能就要归功于spring boot starter,所有与spring整合的功能都在逐步开发一个starter,目的就是与spring boot整合让所有配置都放在一个文件中,也不用添加繁杂的依赖,只需要添加starter的依赖即可。

spring boot应用都是由一个main方法启动的,同时也是发布的jar包的启动方法,这个方法是整个项目的入口,以前所有的spring xml配置或者项目配置都可以在这里通过引入配置文件或者基于注解的方式在项目启动时注入。

首先是依赖的问题,你需要继承来自spring的一个父项目:

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.BUILD-SNAPSHOT</version>
</parent>

当然这样不是很好,你也可以引入依赖,像下面这样:

<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.0.BUILD-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

这些依赖的不同只是会让你打包的结果不同而已,对项目没有任何影响,spring boot项目打包会有两种情况,一个是能够直接运行的包,这种包包含了所有项目依赖,另外一种就是普通的包,没有任何依赖,只有你的项目本身。看具体需求选择不同方式吧。

@SpringBootApplication
@ImportResource( "classpath:spring.xml" )
public class UserApplication {

@Bean
public HttpMessageConverters fastjsonHttpMessageConverter(){

FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();

FastJsonConfig fastJsonConfig = new FastJsonConfig();

SerializerFeature[] serializerFeatures = {
SerializerFeature.WriteNullStringAsEmpty,
SerializerFeature.WriteNullListAsEmpty,
SerializerFeature.WriteMapNullValue
};

fastJsonConfig.setSerializerFeatures( serializerFeatures );
fastConverter.setFastJsonConfig( fastJsonConfig );

return new HttpMessageConverters( fastConverter );

}

public static void main(String[] args) {
SpringApplication.run( UserApplication.class, args );
}
}

上面是spring boot的main方法,项目启动最主要的依赖就是SpringBootApplication这个注解,这个注解说明了这个是个spring boot项目,这个注解包含了SpringBootConfiguration和EnableAutoConfiguration这两个注解,第一个说明表明是spring boot配置,第二个是启用自动注解。ImportResource则是引入配置文件,同时也兼容了spring项目。在这里可以通过bean配置的方式进行项目的配置,如上面就对spring boot的序列化方式进行了配置,采用fastjson。

然后就是controller的编写:

@RestController
public class Example {

@RequestMapping("/")
String home() {
return "Hello World!";
}

}

其实也就一个注解的事情,而RestController和普通spring Controller的唯一区别就是RestController多了一个注解ResponseBody,也就是说RestController其实就是配置好了json序列化的spring项目,本身spring就是可以开发restful的。

最后就是application.properties配置文件,默认spring boot是读取这个文件的,也可不用配置,这里我们就进行简单配置:

server.port=9090
spring.application.name=192.168.106.128

其实也就配置了端口,不然就是默认tomcat的8080,和应用名称,这样一个简单的spring boot项目就搞定了,是不是很快?运行main方法项目就启动了。相比传统的web项目是要配置一堆配置文件的,至于引入spring配置那个注解也可以安全不需要。后面更新spring cloud注册中心 eureka

  
BugHome版权所有丨转载请注明出处:https://minei.me/archives/213.html
  

发表评论

电子邮件地址不会被公开。 必填项已用*标注