SpringBoot爲什麼適合做微服務開發?

SpringBoot設計的目的是爲了簡化Spring應用初期工程的搭建以及開發過程。從一定的角度上說,SpringBoot並沒有在Spring的基礎上引入新的東西,只是在Spring和一些第三方的框架(比如:Mybatis、Redis、ActiveMQ...)的基礎上進行了整合和封裝,基於約定大於配置的思想,通過定義的註解替代了Spring應用中的.xml配置文件,使得項目的搭建、開發和部署變得簡單。

微服務從業務層面對項目進行分割,注重項目粒度的劃分,這也意味着一個項目將會被分成很多個子項目,比如:文件上傳爲一個項目,用戶登錄鑑權爲一個項目,項目之間獨立部署並通過協議進行數據交互。因此,利用SpringBoot做爲微服務的開發框架,使得編碼、配置、部署、監控變得簡單。

SpringBoot項目工程的搭建

搭建完的目錄結構

工程基於“約定大於配置”的思想進行搭建,Application.java是項目的啓動文件,template文件夾存放項目有關的頁面,項目安裝resources->static->public的順序查找文件。SpringBoot也並非完全沒有配置,對於一些可能會被經常改動的信息(比如數據庫信息),還是要存放在配置文件中

pom.xml

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.1.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
             <source>1.8</source>
             <target>1.8</target>
             <encoding>UTF-8</encoding>
        </configuration>
    </plugin>
    <!-- mvn clean package後,使用java -jar demo.jar啓動項目 -->
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <mainClass>hello.Application</mainClass>
        </configuration>
    </plugin>
</plugins>

Application.java

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

通過運行main方法便可啓動SpringBoot項目,完成了一個SpringBoot工程的搭建,同時SpringBoot整合了很多第三方框架,方便開發者使用的引入。

SpringBoot的一些重要註解

@Configuration : 表示Application作爲sprig配置文件存在 
@EnableAutoConfiguration: 啓動spring boot內置的自動配置 
@ComponentScan : 掃描bean,路徑爲Application類所在package以及package下的子路徑,

而上文使用的@SpringBootApplication則是這三個重要註解的一個整合。

SpringBoot集成Mybatis

修改pom.xml,引入相應的jar包,同時在application.properties中配置數據源信息以及掃碼的xml和實體類便可實現SpringBoot與Mybatis的集成。

pom.xml

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.46</version>
</dependency>
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>2.7.2</version>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.0</version>
</dependency>

application.properties

mybatis.mapper-locations=classpath*:mapper/*Mapper.xml  
mybatis.type-aliases-package=cn.hsfeng.model

# jdbc_config
spring.datasource.url=jdbc:mysql://localhost:3306/mysql_demo?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=admin

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.dataSourceClassName=com.zaxxer.hikari.HikariDataSource
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.cachePrepStmts=true
spring.datasource.hikari.prepStmtCacheSize=250
spring.datasource.hikari.prepStmtCacheSqlLimit=2048

SpringBoot集成Redis

Spring Data Redis爲我們封裝了Redis客戶端的各種操作,方便我們對數據的緩存進行操作。同樣是先修改pom.xml,接着在application.properties中配置redis連接信息,同時需要通知Spring集成Redis,並啓動緩存。

pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
</dependency>

application.properties

# REDIS
# Redis數據庫索引(默認爲0)
spring.redis.database=0  
# Redis服務器地址
spring.redis.host=localhost
# Redis服務器連接端口
spring.redis.port=6379  
# Redis服務器連接密碼(默認爲空)
spring.redis.password=
# 連接池最大連接數(使用負值表示沒有限制)
spring.redis.pool.max-active=30  
# 連接池最大阻塞等待時間(使用負值表示沒有限制)
spring.redis.pool.max-wait=-1  
# 連接池中的最大空閒連接
spring.redis.pool.max-idle=10  
# 連接池中的最小空閒連接
spring.redis.pool.min-idle=0  
# 連接超時時間(毫秒)
spring.redis.timeout=10000 

config/RedisConfig.java

@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport{

}

在代碼中設置緩存的key則可使用@Cacheable(value="name", key="key"),Redis以hash的數據類型將查詢的結果保存到數據庫中。

其實不難發現,SpringBoot將一些第三方的框架整合得很好,開發人員只需要導入對應的jar包,再做一些簡單的配置和聲明,便可實現框架的集成,完成項目工程的搭建,我覺得這也是SpringBoot適合做微服務框架表現得最直接的一點了吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章