在这里给大家介绍一下springboot的搭建及开发,本文写的很详细,是从0开始的,步骤详细,而且代码也都是完整的,大家可以拷贝回去,根据需要修改。
1,在这里我使用的工具是IDEA;首先,先建立一个maven项目,我搭建了一个springboot的maven项目,如下图所示:
2,搭建好maven项目后,第一部是将pom.xml添加东西,也就是一些配置和依赖等;如下图,可以将此pom.xml文件复制到你的pom.xml里面去,下面是一个完整的pom文件;添加的配置和依赖都加上了注解的。添加好pom文件后记得在线下载pom文件里面的jar包
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>springboot</groupId>
<artifactId>com.springboot.test</artifactId>
<version>1.0-SNAPSHOT</version>
<name>com.springboot.test Maven Webapp</name>
<url>http://maven.apache.org</url>
<!-- pom继承parent -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.5.RELEASE</version>
</parent>
<!-- nexus是用于建立maven私服的,这样maven仓库的jar包
就会从整个私服中获取,url就是私服的地址 -->
<repositories>
<repository>
<id>nexus</id>
<name>Team Nexus Repository</name>
<url>http://maven.net.cn/content/groups/public/</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Team Nexus Repository</name>
<url>http://maven.net.cn/content/groups/public/</url>
</pluginRepository>
</pluginRepositories>
<!-- 使用properties定义maven熟悉,然后在其他地方使用
${属性名}来引用该属性 -->
<properties>
<java.version>1.8</java.version>
<mybatis.version>3.3.0</mybatis.version>
<mybatis-spring.version>1.2.3</mybatis-spring.version>
<commons-lang3.version>3.4</commons-lang3.version>
<commons-io.version>2.4</commons-io.version>
<jackson.version>2.1.5</jackson.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<!-- 下面是项目依赖的jar包 -->
<dependencies>
<!-- 下面是springboot需要的依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--<exclusions> <exclusion> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions>-->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<!-- mysql 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!-- 数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.12</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- httpcomponents是用来做http访问的工具 -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
<!-- GENERAL UTILS begin -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.15</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.0</version>
</dependency>
<!-- shiro spring. -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.2.6</version>
</dependency>
<!-- shiro ehcache -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-ehcache</artifactId>
<version>1.2.6</version>
</dependency>
<!--
包含支持UI模版(Velocity,FreeMarker,JasperReports),
邮件服务,
脚本服务(JRuby),
缓存Cache(EHCache),
任务计划Scheduling(uartz)。
-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<!-- 集成ehcache需要的依赖-->
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
</dependency>
<!-- Swagger 是一系列对 RESTful 接口进行规范描述和页面展示的工具. 通过 springfox-swagger 将 Swagger 与 Spring-MVC 整合, 可从代码中的注解获取信息, 并生成相应的文档. 效果如下所示. -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.2.2</version>
</dependency>
<!-- 文件上传 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<!-- spring热部署-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.6.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<!-- poi是用来通过Java生成office的 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.15</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.15</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.xmlbeans/xmlbeans -->
<!-- xmlbeans用来更好的解析xml -->
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>2.6.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.jdom/jdom -->
<!-- jdom是用来对xml的生成、解析、序列化等 -->
<dependency>
<groupId>org.jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.1.3</version>
</dependency>
</dependencies>
<build>
<finalName>partner</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--<configuration>
<fork>true</fork><!– 如果没有该项配置,肯呢个devtools不会起作用,即应用不会restart –>
</configuration>-->
</plugin>
<!-- 是用来生成mapper.xml文件的,generatorConfig.xml就是配置 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<configuration>
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
</plugins>
</build>
<packaging>war</packaging>
</project>
3,添加完pom文件后我们还需要在src.main.resources下面建立3个文件夹,如下图所示:
在resources里面建立3个文件夹,mapper用来存放mybatis中的mapper.xml文件的;static是用来存放一些html需要用到的js,css等文件;templates是用来存放页面的,这里就是用来存放html的。
4,建立好3个文件后,我们还需要在resources里面加上4个文件,第一个是logback.xml日志文件,生成log的,在spring中也有,不过在这里加了一个logback.xml代码在下面,大家可以全部拷贝到项目中,下面是一个完整的logback.xml;
<!-- Logback configuration. See http://logback.qos.ch/manual/index.html -->
<configuration scan="true" scanPeriod="10 seconds">
<include resource="org/springframework/boot/logging/logback/base.xml" />
<property name="LOG_PATH" value="${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}" />
<logger name="org.springframework.web" level="INFO"/>
<logger name="org.springboot.sample" level="TRACE"/>
<logger name="com.springboot" level="info" />
<appender name="INFO_FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_PATH}/info.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/info-%d{yyyyMMdd}.log.%i
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>500MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>2</maxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}
-%msg%n
</Pattern>
</layout>
</appender>
<appender name="ERROR_FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<File>${LOG_PATH}/error.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/error-%d{yyyyMMdd}.log.%i
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>500MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>2</maxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}
-%msg%n
</Pattern>
</layout>
</appender>
<!-- 输出到控制台中 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<logger name="com.ibatis" level="INFO,DEBUG,ERROR" />
<logger name="com.ibatis.common.jdbc.SimpleDataSource" level="INFO,DEBUG,ERROR" />
<logger name="com.ibatis.common.jdbc.ScriptRunner" level="INFO,DEBUG,ERROR" />
<logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" level="INFO,DEBUG,ERROR" />
<logger name="java.sql.Connection" level="INFO,DEBUG,ERROR" />
<logger name="java.sql.Statement" level="INFO,DEBUG,ERROR" />
<logger name="java.sql.PreparedStatement" level="INFO,DEBUG,ERROR" />
<logger name="jdbc.sqltiming" level="INFO,DEBUG,ERROR"/>
<logger name="java.sql.ResultSet" level="INFO,DEBUG,ERROR" />
<root level="DEBUG">
<appender-ref ref="INFO_FILE" />
<appender-ref ref="ERROR_FILE" />
<appender-ref ref="STDOUT" />
</root>
</configuration>
第二个文件是application.properties,也就是springboot的配置文件,完整代码如下:
server.sessionTimeout=72000
#访问网站的路径http://ip:port/hb_partner
server.contextPath=/springboot
spring.profiles.active=test
mybatis.mapperLocations=classpath:mapper/*.xml
mybatis.typeAliasesPackage=com.springboot.model
########################################################
###THYMELEAF (ThymeleafAutoConfiguration)
########################################################
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
# ;charset=<encoding> is added
spring.thymeleaf.content-type=text/html
# set to false for hot refresh
spring.thymeleaf.cache=false
spring.devtools.restart.exclude=static/**,public/**,templates/**
#(这里是限制的文件大小)
multipart.maxFileSize=50Mb
multipart.maxRequestSize=50Mb
第三个文件是application-test.properties,你也可以把test改成其他的名字,都可以,但是注意格式,
application-{自定义名字}.properties,这个格式是规定的,而且这里修改名字后,要在第二个配置文件application.properties中将
spring.profiles.active
=
test,将这个test改成对应的自定义的那个名字
,这个文件主要是用来放数据源配置的,比如有2个数据库,一个是测试库,还有一个是正式库,这里就可以有2个这个文件,分别配置不同的数据源,然后根据需要选择其中的;
下面是application-test.properties的完整代码:记得下面数据源的配置是我个人的,所以大家在使用的时候,需要根据自己数据库地址,密码等改成自己的!!
#访问项目端口号
server.port = 8089
application.hbBizApi =http://wxtest.jbx188.com/hb-biz/
#session超时时间
server.session-timeout=72000
########################################################
###datasource
########################################################
#数据源
spring.datasource.name= test
#数据源地址
spring.datasource.url=jdbc:mysql:replication://localhost:3306,localhost:3306/SpringBoot?characterEncoding=utf-8&allowMultiQueries=true
#数据源账号密码
spring.datasource.username=root
spring.datasource.password=123456
#数据库连接池,设置配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.ReplicationDriver
spring.datasource.filters= stat
spring.datasource.maxActive= 20
spring.datasource.initialSize= 1
spring.datasource.maxWait= 20000
spring.datasource.minIdle= 1
#spring.datasource.maxIdle=20
spring.datasource.timeBetweenEvictionRunsMillis= 20000
spring.datasource.minEvictableIdleTimeMillis= 300000
spring.datasource.validationQuery=select 'x'
spring.datasource.testWhileIdle= true
spring.datasource.testOnBorrow= false
spring.datasource.testOnReturn= false
spring.datasource.poolPreparedStatements=true
spring.datasource.maxOpenPreparedStatements= 20
#设置Tomcat最大线程数,默认值为200
server.tomcat.max-threads=800
#设置Tomcat编码
server.tomcat.uri-encoding=UTF-8
# 存放Tomcat的日志、Dump等文件的临时文件夹,默认为系统的tmp文件夹(如:C:\Users\Angel\AppData\Local\Temp)
server.tomcat.basedir=D:/springboot
#设置打印日志
logging.config=classpath:logback.xml
#日志文件目录
logging.path=e:/git/partner/log
logging.level.root=warn
第四个文件是generatorConfig.xml,mybatis的配置文件,用来自动生成mapper.java,mapper.xml和model的,完整代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!--数据库驱动-->
<!-- 数据库connector-jar的位置,因为使用的是maven,所以位置应该在.m2文件夹里 -->
<classPathEntry location="/Users/wujuepeng/.m2/repository/mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--数据库链接地址账号密码-->
<jdbcConnection
driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/SpringBoot" userId="root" password="123456">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!--生成Model类存放位置-->
<!--targetPackage是生成的model类放在哪个包里面 -->
<!--targetProject是包的地址 -->
<javaModelGenerator
targetPackage="com.springboot.model"
targetProject="/Users/wujuepeng/Desktop/springboot/src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!--生成映射文件存放位置-->
<sqlMapGenerator
targetPackage="mapper"
targetProject="/Users/wujuepeng/Desktop/springboot/src/main/resources" >
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!--生成Dao类存放位置-->
<javaClientGenerator
type="XMLMAPPER"
targetPackage="com.springboot.mapper"
targetProject="/Users/wujuepeng/Desktop/springboot/src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- tableName是数据库表名,
domainObjectName是生成的domain类名,
剩下的全部为false就好了-->
<table tableName="user"
domainObjectName="User"
enableCountByExample="false"
enableUpdateByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
selectByExampleQueryId="false">
</table>
</context>
</generatorConfiguration>
在这个generatorConfig.xml配置文件中,需要改的东西有6个地方:大家一定要注意!!
1)下面这个是mysql-connect的jar,在maven项目中,jar包都是网上下载下来的,一般是在电脑的C盘里面有一个.m2文件夹,大家可以找一下,我这里是mac版本的所以没有C盘,找到mysql-connector-java-xxx.jar,然后改成你的地址。
<classPathEntry location="/Users/wujuepeng/.m2/repository/mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar"/>
2)下面这个改的就比较简单了,mysql地址和账号密码。
<jdbcConnection
driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/SpringBoot" userId="root" password="123456">
</jdbcConnection>
3)下面改的是自动生成model类,放在什么位置,需要修改2个地方,一是targetPackage是model类放在什么包下面,二是targetProject是项目在电脑的什么位置,可以看到地址是到项目里面的java包,大家根据自己的地址进行修改就好了。
<!--生成Model类存放位置-->
<!--targetPackage是生成的model类放在哪个包里面 -->
<!--targetProject是包的地址 -->
<javaModelGenerator
targetPackage="com.springboot.model"
targetProject="/Users/wujuepeng/Desktop/springboot/src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
4)下面是对mapper.xml文件进行修改,targetPackage是在哪个包下,一开始我就让大家在resources下面建立了一个mapper文件包,就是用来这里放置自动生成的mapper.xml;所有下面只需要修改下targetProject的位置,也就是resources在电脑里面的位置。
<!--生成映射文件存放位置-->
<sqlMapGenerator
targetPackage="mapper"
targetProject="/Users/wujuepeng/Desktop/springboot/src/main/resources" >
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
5)下面是用来生成mapper.java文件的,同意的修改两个地方,1是targetPackage,也就是mapper.java文件放在哪个包下面,二是targetProject,也就是你的targetPackage包是在哪个目录下面的,通常都是在java文件包下面的,所以就是修改你的java文件包在你的电脑的什么位置。
<!--生成Dao类存放位置-->
<javaClientGenerator
type="XMLMAPPER"
targetPackage="com.springboot.mapper"
targetProject="/Users/wujuepeng/Desktop/springboot/src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
6)下面是数据库表的位置,既然是自动生成,当然要根据数据库表来自动生成类咯,下面tablename是指数据库的表名字,然后domainObjectName是指自动生成的model叫什么名字,然后接下来的就全是false咯,注意,下面我就写了一条,也就是一个表或者一个类的自动生成,你有多个表,同时也可以一起生成,多加几条就好了,将tableName和domainObjectName改一下就可以。
<!-- tableName是数据库表名,
domainObjectName是生成的domain类名,
剩下的全部为false就好了-->
<table tableName="user"
domainObjectName="User"
enableCountByExample="false"
enableUpdateByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
selectByExampleQueryId="false">
</table>
5,文件都加好了,resources目录结构如下图所示:
6,接下来需要在java文件包下面建立包,com.xxx.xxx的形式大家都清楚,在里面有一个main包,在main包的下面建立一个ApplicationApp的类,类的完整代码内容如下:
package com.springboot.main;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@SpringBootApplication
@EnableTransactionManagement
public class ApplicationApp {
public static void main(String[] args) {
SpringApplication.run(ApplicationApp.class, args);
}
}
里面是一个main方法,在springboot中都是靠main方法运行程序的,在类的上面有2个注解,第一个是@
SpringBootApplication是springboot应用的注解,第二个是
@EnableTransactionManagement是事务管理的注解。
添加好后,如下图所示:
7,现在springboot就搭建好了,可以直接点击直接运行main方法,如下图:
8,运行成功后,在控制台会出现下面样式:
而且在控制台中没有报错,说明你的springboot就搭建成功了
接下来是对springboot如何自动生成model,mapper.java,mapper.xml及开发项目的介绍请查看 springboot搭建和开发(下)