1. 程式人生 > >微服務架構之Spring Boot入門

微服務架構之Spring Boot入門

            今天我們來說說微服務,但是首先要說說我們目前開發的大部分專案,目前我們開發的專案都是比較集中的單體應用,就是將所有功能集中在一起,在專案擴充套件過程中,升級,優化某一部分就會影響所有的模組,在管理和升級中有利有弊,並且所有模組相對集中,依賴較強,為了解決模組相對集中,資源使用相對集中的問題就出現了分散式,分散式可有效降低模組間的耦合和資源爭用的問題。今天我們來說說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

區別還是很大的,需要我們去注意的地方還是很多。