今天我们来说说微服务,但是首先要说说我们目前开发的大部分项目,目前我们开发的项目都是比较集中的单体应用,就是将所有功能集中在一起,在项目扩展过程中,升级,优化某一部分就会影响所有的模块,在管理和升级中有利有弊,并且所有模块相对集中,依赖较强,为了解决模块相对集中,资源使用相对集中的问题就出现了分布式,分布式可有效降低模块间的耦合和资源争用的问题。今天我们来说说spring的微服务,今天重入门开始,先说说Spring Boot。Spring是Spring推出的快速开发,内含容器的快速开发框架,Spring Boot使用约定大于配置的方式,自动根据依赖确定环境配置,达到快速开发快速上线的目的。
先上工程截图,这个是个maven工程,结构如下,今天的实例就是一个演示,比较简单,先不涉及yml和properties的配置说明,后续会专门详细讲解,因为spring boot是基于spring mvc的,如果你有spring mvc的相关开发经验,那么你就能很快的学会这个教程,并且理解他,接下来我们就先上代码,然后在进行讲解。
<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>Demo2</groupId>
<artifactId>Demo2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除嵌入式tomcat插件 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>Demo1</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
这个是POM.Xml这里我们将工程打成了war包,同时测试tomcat中的性能情况,我们今天主要配置了基本的spring boot依赖。
package org.demo2.controller;
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);
}
}
package org.demo2.controller;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
public class SpringBootStartApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 注意这里要指向原先用main方法执行的Application启动类
return builder.sources(Application.class);
}
}
package org.demo2.controller;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@EnableAutoConfiguration
public class SampleController {
@RequestMapping("/sample")
public String home() {
return "Hello World!";
}
}
通过以上三个类就可以完成基于内容容器和外置容器的测试了,我们先说下基于外置容器,外置容器我们需要对启动做些修改,需要初始化一个
SpringApplicationBuilder
这个类,这类能被tomcat等servlet容器所识别并且执行。如果不需要,我们直接以java的执行形式,执行application即可。然后我们就可以在浏览器中访问了。
如果我们是基于spring boot的方式访问,我们在地址需要输入http://IP:port/requestURI
如果我们是基于web的方式访问,我们需要在实质输入 http://IP:port/project/requestURI
区别还是很大的,需要我们去注意的地方还是很多。