首页 > 经验记录 > java > Spring Boot以及微服务

Spring Boot以及微服务

先抛出一个微服务概念:

微服务是一种以业务功能为主的服务设计概念,每一个服务都具有自主运行的业务功能,对外开放不受语言限制的API (最常用的是HTTP),应用程序则是由一个或多个微服务组成。

 

 

现在的web项目几乎都会用到spring框架,而要使用spring就会要需要配置多的一批的xml配置文件。

而springboot的出现解决了这一问题,一个项目甚至不用部署到服务器上直接开跑。用起来真是爽的起飞。

可以非常方便、快速搭建项目,不用关心框架之间的兼容性,适用版本等各种问题,想使用任何东西,仅仅添加一个配置就可以,所以使用sping boot非常适合构建微服务。

 

在IDEA里边,创建项目直接选择Spring Initializr 这个选项,然后跟着一步步走就行了。

如果是eclipse可以进这个网站,选择选项然后点大绿按钮 Generate Project,就可以生成一个SpringBoot项目,然后导进去就行了。

 

SpringBoot的特性:

1、无需手动管理依赖jar包的版本

Spring-boot-*的jar包已对一些功能性jar包进行了集成,示例如下:

  • spring-boot-starter 核心Spring Boot starter,包括自动配置支持,日志和YAML
  • spring-boot-starter-actuator 生产准备的特性,用于帮你监控和管理应用
  • spring-boot-starter-web 对全栈web开发的支持,包括Tomcat和 spring-webmvc
  • spring-boot-starter-aop 对面向切面编程的支持,包括 spring-aop和AspectJ
  • spring-boot-starter-jdbc 对JDBC数据库的支持
  • spring-boot-starter-security 对 spring-security 的支持
  • spring-boot-starter-amqp 通过spring-rabbit来支持AMQP协议(Advanced Message Queuing Protocol)。
  • spring-boot-starter-ws 支持Spring Web Services。
  • spring-boot-starter-redis 支持Redis键值存储数据库,包括spring-redis。
  • spring-boot-starter-test 支持常规的测试依赖,包括JUnit、Hamcrest、Mockito以及spring-test模块。

 

2、独立运行的Spring项目

Spring Boot默认将应用打包成一个可执行的jar包文件,构建成功后使用java -jar命令即可运行应用。

或者在应用项目的主程序中运行main函数即可,不需要依赖tomcat、jetty等外部的应用服务器。

其中内置的servlet Container:

Tomcat 8 3.1 Java 7+
Tomcat 7 3.0 Java 6+
Jetty 9.3 3.1 Java 8+
Jetty 9.2 3.1 Java 7+
Jetty 8 3.0 Java 6+

此外,仍然可以部署Spring Boot项目到任何兼容Servlet3.0+的容器。

 

3、自动配置,无需xml

  • Spring Boot尝试根据你添加的jar依赖自动配置你的应用。例如,如果HSQLDB在类路径中,并且你没有手动配置任何db连接bean,则Spring Boot会自动配置一个内存db。
  • 使用@EnableAutoConfiguration或者@SpringBootApplication注解,配合@Configuration注解类,即可达到自动配置的目的。
  • Spring Boot的这种自动配置是非侵入式的,你可以定义自己的配置或bean来替代自动配置的内容。

 

4、外部化配置

Spring Boot可以使用properties文件,YAML文件,环境变量,命令行参数等来外部化配置。属性值可以使用@Value注解直接注入到bean中,并通过Spring的Environment抽象或经过@ConfigurationProperties注解绑定到结构化对象来访问。实例如下:

 

 

 

5、嵌入式servlet容器

Spring Boot的web模块内置嵌入的Tomcat, Jetty, Undertow来构建自包含的Servlet容器。web应用打包成可执行jar包时,相应的servlet 容器也会被嵌入到应用jar中。

并且servlets, filters和listeners都可以通过声明为bean来被容器注册。servlet容器还可以通过外部化配置来相关定制属性,如server.port, server.session.persistence等。

application.yml配置server的端口号和session超时时间,需要注意的是,使用.yml时,属性名的值和冒号中间必须有空格,如下:

 

server:

port: 8888

session-timeout: 60

 

6、开启devtools特性

devtools的热部署和自动重启

要想在Eclipse中使用Devtools的重启功能,需要将自动编译功能打开。每次保存文件并自动编译后,devtools会检测到classpath内容的修改,并触发应用重启。重启时实际只重新加载了一部分类,因此速度会非常快。

  • devtools的livereload

开启devtools特性的应用在启动时会启动一个livereload的server,在浏览器(如chrome,Firefox)安装livereload插件后,该插件会监测到livereload server的更新,并自动刷新页面。

 

 


EA PLAYER &

历史记录 [ 注意:部分数据仅限于当前浏览器 ]清空

      00:00/00:00