快速架構SpringBoot+Mybatis

SpringBoot+Mybatis

玩了一段時間了,上網轉了轉,發現網上有許多SpringBoot框架架構的相關教程,不過都比較簡短,可能小萌新看懂需要花費很多腦力和時間,所以本人就決定寫一篇所有人都能輕鬆看懂的教程,還望大家多多支持hhh~~~

如果你是以下兩種人的其中一種

  • 熟練愛好者:那麼你如果忘記了有pom.xml和ymal文件、properties文件詳細配置,你可以在本篇中直接找乾貨COPY.(o)/~
  • 小萌新:那麼建議你能夠耐心堅持下去,祝你們學習愉快!

SpringBoot可以說是目前Java開發非常主流的框架了,可以很簡單的創造出許多漂亮網站的功能。

總的一句話概括SpringBoot就是:Boot!快速啓動!習慣優於配置!大道至簡!

怎麼理解這句話呢?其實就是說,相比於SSM定義很多複雜的Bean或者Config其他的配置。Springboot中,基本上它可以“讀懂”你的意思,幫你把看似機械化的架構和配置工作。全部做完、十分簡單、甚至Tomcat都不用。

然後Springboot真的可以很簡單~,只要好好學習自己手動架構一個也就理解了,架構完以後就能無限的Copy啦,其中簡單的說下Springboot的一些特點。

  1. 內置Tomcat
    我覺得這個基本上顛覆了以前的傳統。怎麼理解?
    你做完一個項目。直接打包成jar、然後找到一臺有JDK環境的地方,運行指令就可以直接啓動項目了~!
    完全不需要去下載Tomcat、然後配置server.xml、然後放到webApp、然後用tomcat運行和啓動。同時還不會影響到其他項目的運行~!
前臺啓動:
	java -jar XXX.jar
後臺啓動:
	java -jar xxx.jar &
	
假設你打開Linux終端、如果用前臺運行的話、當你關閉終端時、也就停止了項目的運行。
所以、當你真正需要部署的時候,使用後臺部署模式。部署後你可以直接關閉終端。
  1. 默認配置
    大道至簡。各種web支持。Mysql支持。Redis支持。都可以做到按照常用習慣自動配置

  2. 友好自定義配置
    在resource目錄下創建名爲application.yaml的文件。可以在裏面對項目進行任何配置。

server:
  port: 8080
  servlet-path: /
spring:
    http:
      encoding:
        charset: utf-8
        enabled: true
        force: true
    resources:
          static-locations: classpath:/static/,classpath:/public/
    mvc:
      view:
        prefix: /WEB-INF/jsp/
        suffix: .jsp
    mail:
      host: smtp.163.com
      username: [email protected]
      password: xxxxx
      properties:
              mail:
                  smtp:
                      auth: true
                      timeout: 25000
mybatis:
  mapper-locations: cn.lantian.springboot.mapper.*.xml
  type-aliases-package: cn.lantian.springboot.model

#pagehelper分頁插件
pagehelper:
    helperDialect: mysql
    reasonable: true
    supportMethodsArguments: true
    params: count=countSql
logging:
  level: info
  1. 幾乎全註解模式
    controller、service、配置、應有盡有

  2. 對其他開源系列都基本很友好
    比如分頁插件、輕鬆一配、完成工作!


好、有一個小概念之後,我們正式來構建Springboot項目。因爲筆者使用的是IDEA作爲Java的IDE,那就以此爲例(編譯器大同小異,掌握了內部的來龍去脈用什麼都一樣)

  1. 創建一個maven項目

創建一個maven項目

這裏寫圖片描述

這裏寫圖片描述

3.如果不出意外的話、你們的骨架就架構成功了。是不是層次看着特別舒服。

在這裏插入圖片描述

4.接下來我們導入Springboot框架中常用到的相關jar包。找到POM.XML文件

(o)/~是這樣的。

O(∩_∩)O哈哈~然後看好了哦、放點東西進去

<?xml version="1.0" encoding="UTF-8"?>
<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>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
    </parent>

    <groupId>groupId</groupId>
    <artifactId>FastAcountBook</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <dependencies>
        <!-- ftpclient -->
        <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
            <version>3.1</version>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>20.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.5</version>
        </dependency>
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.2.1</version>
        </dependency>
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.3</version>
        </dependency>

        <!--基本整合包、然後原本有配置包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

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

        <!-- 添加thymeleaf依賴 -->
        <!--<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        &lt;!&ndash; import lombok &ndash;&gt;
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.8</version>
            <scope>provided</scope>
        </dependency>-->
        <!-- 注意,這裏不需要版本號,因爲如果是按照我之前的方法創建的項目,pom.xml文件裏會自動添加parent結點。-->

        <!--Mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.40</version>
        </dependency>
        <!-- alibaba的druid數據庫連接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.11</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-joda</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.module</groupId>
            <artifactId>jackson-module-parameter-names</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>


        <!-- 分頁插件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.1.2</version>
        </dependency>
        <!-- SpringBootPeizhialibaba的druid數據庫連接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.0</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>

        <!--email郵件 http://blog.csdn.net/u011244202/article/details/54809696-->
        <!-- Email -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>


        <!--Excel表dao導出導入-->
        <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
        <!--處理2007年以上的excel版本-->
        <!-- POI EXCEL -->
        <!--<dependency>-->
        <!--<groupId>org.apache.poi</groupId>-->
        <!--<artifactId>poi-ooxml</artifactId>-->
        <!--<version>3.9</version>-->
        <!--</dependency>-->

        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-web</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-annotation</artifactId>
            <version>3.1.0</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.5</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.2</version>
        </dependency>

        <!-- 熱部署模塊 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional> <!-- 這個需要爲 true 熱部署纔有效 -->
        </dependency>
    </dependencies>


    <build>
        <finalName>${project.artifactId}</finalName>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                    <include>**/*.tld</include>
                    <include>**/*.jsp</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*</include>
                </includes>
            </resource>
        </resources>


        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- mybatis generator 自動生成代碼插件 -->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
                    <overwrite>true</overwrite>
                    <verbose>true</verbose>
                </configuration>
            </plugin>

            <!-- 資源文件拷貝插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <!-- java編譯插件 -->
            <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>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

        </plugins>

    </build>

</project>

好的喲!這樣所需要的jar包就已經丟進去了。

接下來、很舒服、我們就開始做最後配置

在cn.lantian.springboot下新建一個Application的啓動類、並標註上相關注解

package cn.lantian.springboot;

import cn.lantian.springboot.interceptor.FirstInterceptor;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

/**
 * Created by Lzbin、lantian on 2018/3/10.
 *
 * @version 1.0
 * @PACKAGE_NAME cn.lantian.springboot.application
 * @Dercripton
 * @Time 下午11:03
 */
@Controller
@MapperScan("cn.lantian.springboot.mapper")
@SpringBootApplication
@SpringBootConfiguration
@EnableScheduling
@EnableCaching
public class FastAcountBookApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(FastAcountBookApplication.class);
    }

    @RequestMapping("/hello")
    @ResponseBody
    public String hello() {
        return "hello";
    }


    //執行順序:過濾前 – 攔截前 – Action處理 – 攔截後 – 過濾後
    //MVC控制-攔截器配置
    @Configuration
    static class WebMvcConfigurer extends WebMvcConfigurerAdapter {
        //增加攔截器
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(new FirstInterceptor()).//指定攔截器
                    addPathPatterns("/**").excludePathPatterns("/resources","/hello");//指定攔截路徑
        }
    }


    /**
     * 註冊DruidServlet
     *
     * @return
     */
    @Bean
    public ServletRegistrationBean druidServletRegistrationBean() {
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean();
        servletRegistrationBean.setServlet(new StatViewServlet());
        servletRegistrationBean.addUrlMappings("/druid/*");
        return servletRegistrationBean;
    }

    /**
     * 註冊DruidFilter攔截
     *
     * @return
     */
    @Bean
    public FilterRegistrationBean duridFilterRegistrationBean() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        filterRegistrationBean.setFilter(new WebStatFilter());
        Map<String, String> initParams = new HashMap<String, String>();
        //設置忽略請求
        initParams.put("exclusions", "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*");
        filterRegistrationBean.setInitParameters(initParams);
        filterRegistrationBean.addUrlPatterns("/*");
        return filterRegistrationBean;
    }
    /* datasource:
    name: test
    url: jdbc:mysql://47.98.194.241:3306/officeauto1?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
    username: root
    password: sziit
        # 使用druid數據源
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver*/

    /**
     * 配置DataSource
     *
     * @return
     * @throws SQLException
     */
    @Bean
    public DataSource druidDataSource() throws SQLException {
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setUsername("xxx");
        druidDataSource.setPassword("xxx");

        druidDataSource.setUrl("jdbc:mysql://xxx:3306/fastacountbook?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true");
        //   druidDataSource.setUrl("jdbc:mysql://xxx:3306/officeauto1?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true");
        druidDataSource.setMaxActive(100);
        druidDataSource.setFilters("stat,wall");
        druidDataSource.setInitialSize(10);
        return druidDataSource;
    }


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

}
  • 恭喜你、全部配置完成~!!!

最後、舒服一下吧。點擊main方法、直接啓動~
是不是突然覺得比SSM輕多了、快速啓動就是這個意思。

以上就是Springboot搭建的全過程啦~
還有什麼不明白疑問的地方、可以通過評論進行交流~

如果覺得不錯的小夥伴可以轉發哦讓更多同學看到、一起學習一起進步!!!

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