(二)、一步一步教你搭建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: xxxxx@163.com
      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搭建的全过程啦~
还有什么不明白疑问的地方、可以通过评论进行交流~

如果觉得不错的小伙伴可以转发哦让更多同学看到、一起学习一起进步!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值