springboot搭建和开发(上)

来源:互联网 发布:呼叫器软件设置 编辑:程序博客网 时间:2024/06/06 05:47

在这里给大家介绍一下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><timeBasedFileNamingAndTriggeringPolicyclass="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><timeBasedFileNamingAndTriggeringPolicyclass="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_partnerserver.contextPath=/springbootspring.profiles.active=testmybatis.mapperLocations=classpath:mapper/*.xmlmybatis.typeAliasesPackage=com.springboot.model###########################################################THYMELEAF (ThymeleafAutoConfiguration)########################################################spring.thymeleaf.prefix=classpath:/templates/spring.thymeleaf.suffix=.htmlspring.thymeleaf.mode=HTML5spring.thymeleaf.encoding=UTF-8# ;charset=<encoding> is addedspring.thymeleaf.content-type=text/html# set to false for hot refreshspring.thymeleaf.cache=falsespring.devtools.restart.exclude=static/**,public/**,templates/**#(这里是限制的文件大小)multipart.maxFileSize=50Mbmultipart.maxRequestSize=50Mb

第三个文件是application-test.properties
,你也可以把test改成其他的名字,都可以,但是注意格式,application-{自定义名字}.properties,这个格式是规定的,而且这里修改名字后,要在第二个配置文件application.properties中将spring.profiles.active=test,将这个test改成对应的自定义的那个名字
,这个文件主要是用来放数据源配置的,比如有2个数据库,一个是测试库,还有一个是正式库,这里就可以有2个这个文件,分别配置不同的数据源,然后根据需要选择其中的;

下面是application-test.properties的完整代码:记得下面数据源的配置是我个人的,所以大家在使用的时候,需要根据自己数据库地址,密码等改成自己的!!

#访问项目端口号server.port = 8089application.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=rootspring.datasource.password=123456#数据库连接池,设置配置spring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.driver-class-name=com.mysql.jdbc.ReplicationDriverspring.datasource.filters= statspring.datasource.maxActive= 20spring.datasource.initialSize= 1spring.datasource.maxWait= 20000spring.datasource.minIdle= 1#spring.datasource.maxIdle=20spring.datasource.timeBetweenEvictionRunsMillis= 20000spring.datasource.minEvictableIdleTimeMillis= 300000spring.datasource.validationQuery=select 'x'spring.datasource.testWhileIdle= truespring.datasource.testOnBorrow= falsespring.datasource.testOnReturn= falsespring.datasource.poolPreparedStatements=truespring.datasource.maxOpenPreparedStatements= 20#设置Tomcat最大线程数,默认值为200server.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/loglogging.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@EnableTransactionManagementpublic 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搭建和开发(下)







原创粉丝点击