目录
3.2.2 项目结构的重新构建(遇到错误时不用像eclipse一样重写)
四、pom.xml-springboot需要的核心jar包配置
五、application.yml-springboot核心配置文件
springboot项目框架主要使用maven来构建整个的项目结构,maven配置文件setting.xml
一、软件配置小问题
1.1 去掉配置文件
*.hprof;*.idea;*.iml;*.pyc;*.pyo;*.rbc;*.yarb;*~;.DS_Store;.git;.hg;.svn;CVS;__pycache__;_svn;vssver.scc;vssver2.scc;
*.conf;*.ini;*.json;*.log;*.md;*.sh;*.txt;*.xml;*.yml
中间不能有空格
1.2版本全改utf-8
1.3习惯(此处可调成eclipse)
二、maven配置问题(在线)
2.1 包放在D盘或者E盘根目录
才能直接可加载
2.1.1 换盘的情况下调节文件
记事本打开D:替换成想用的盘
2.2 idea里加载Maven
选中override才能更改
刷新和更新
2.3 lombok插件安装
不用再写实体里的set、get了,方便编写
三、开始搭建springboot项目
一定要联网
Maven需要联网下载你配置的依赖jar包
3.1 新建
工作区间可以选文件夹
test里无需管理,自动的
pom里是整个项目的控制,及war包所在地,及项目生成结果,有pom说明支持maven
关掉pom让软件如图
拖入jar包破解时要这样关掉
3.2 单独项目的配置
file-setting
ctrl+shift+alt+s
3.2.1 jdk版本切换
3.2.2 项目结构的重新构建(遇到错误时不用像eclipse一样重写)
四、pom.xml-springboot需要的核心jar包配置
4.1 配置后如图刷新maven并下载即可
右下角有条在走以后clear
还爆红重启一下就好了
4.2 自带代码的注意事项![](https://i-blog.csdnimg.cn/blog_migrate/3d7f494d37ba7f9c9f596678cc0d9158.png)
都不能有空格!!
第一行org.example和springcloud有关,springboot相当于springcloud的一个model,springcloud是微服务
xml对缩进有要求
RELEASE代表自动匹配
log4j2为了完善错误日志
和之前的lombok插件相配,jar给用户,插件自己开发
httpclient使java能爬虫
javamail具体代码网上都一样,直接复制,只支持邮箱发邮件
<?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>
<groupId>org.example</groupId>
<artifactId>springboot_demo</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.5.RELEASE</version>
<relativePath/>
</parent>
<properties>
<java.version>1.8</java.version>
<!--MyBatis-Plus-->
<mybatisplus.version>3.3.2</mybatisplus.version>
<!--druid-->
<druid.version>1.1.22</druid.version>
<mybatis-spring.version>2.1.2</mybatis-spring.version>
<!-- mysql驱动版本 -->
<mysql.version>5.1.42</mysql.version>
</properties>
<dependencies>
<!-- 糊涂工具包--动态uuid -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.4.7</version>
</dependency>
<!-- 运算、编码解码 开始 -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.14</version>
</dependency>
<!-- 运算、编码解码 结束 -->
<!-- 热部署插件 开始 更改代码时自动重启下载-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>runtime</scope>
</dependency>
<!-- 热部署 结束 -->
<!-- SpringBoot 开始-->
<!-- mybatis.spring应用的核心包-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<exclusions><!-- 在包中剔除他不好用的日志,换成log4j2-->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
<version>${mybatis-spring.version}</version>
</dependency>
<!-- springboot的一个包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!-- springboot的运行环境剔除了他的tomcat-->
<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>
<!-- spring自测的两个包,那个test-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
<!-- springboot必备包-消息传送-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- SpringBoot 结束-->
<!--log4j2 开始-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
<exclusions>
<exclusion>
<artifactId>log4j-slf4j-impl</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
<exclusion>
<artifactId>jul-to-slf4j</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!--log4j2 结束-->
<!-- mysql驱动 开始 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- mysql驱动 结束 -->
<!-- druid 配置 开始 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<!-- druid 结束 -->
<!-- JSON 配置开始-json串版本 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.68</version>
</dependency>
<!-- JSON 结束 -->
<!-- mybatis plus 开始 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>${mybatisplus.version}</version>
<!-- 只使用数据库、持久化,因为要交给spring来管理,不能用来管理spring -->
<exclusions>
<!-- 剔除了mybatis和spring结合的包 -->
<exclusion>
<artifactId>mybatis-spring</artifactId>
<groupId>org.mybatis</groupId>
</exclusion>
<!-- 剔除了mybatis应用的组件 -->
<exclusion>
<artifactId>mybatis</artifactId>
<groupId>org.mybatis</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- mybatis plus 一个应用包 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatisplus.version}</version>
</dependency>
<!-- mybatis plus 结束 -->
<!-- lombok包引入 开始 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- lombok 结束 -->
<!-- JSP 依赖开始(因为springboot不太支持,得额外引入) -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!--servlet包*3-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
</dependency>
<!-- JSP 依赖结束 -->
<!-- ueditor 开始 - 一个文本编辑器自动生成html-->
<dependency>
<groupId>com.gitee.qdbp.thirdparty</groupId>
<artifactId>ueditor</artifactId>
<version>1.4.3.3</version>
</dependency>
<!-- ueditor 结束 -->
<!-- Httpclient 开始 -一种http传输协议-->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.5</version>
</dependency>
<!-- Httpclient 结束 -->
<!--spring boot集成javamail -可以往邮箱里发送东西的插件-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- 汉字转拼音 -->
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency>
</dependencies>
<!-- 利用maven打包项目的配置,给项目打包 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--如果没有fork配置,devtools不起作用,即项目修改后不会重新启动 -->
<fork>false</fork>
</configuration>
</plugin>
</plugins>
</build>
</project>
指令,规定了版本
druid是一个插件,阿里的
mybatisplus必须基于mybatis之上来使用
数据库用mysql
<properties>
<java.version>1.8</java.version>
<!--MyBatis-Plus-->
<mybatisplus.version>3.3.2</mybatisplus.version>
<!--druid-->
<druid.version>1.1.22</druid.version>
<mybatis-spring.version>2.1.2</mybatis-spring.version>
<!-- mysql驱动版本 -->
<mysql.version>5.1.42</mysql.version>
</properties>
上面的需要能手写,常用的
<dependencies></dependencies>里放常用包
<exclusions><!-- 在包中剔除-->
${获取
五、application.yml-springboot核心配置文件
有小草叶就是正确
yml文件对缩进和对齐和空格都有要求,不能随便改
说明 server.port快捷书写 server: port: 8888(端口号) servlet: context-path: /(这个杠不用写项目名,直接可以访问) jsp: init-parameters: true(true之前有空格,配置jsp的) tomcat: uri-encoding: UTF-8(tomcat的字符集编码) basedir: /home/tmp(缓存) spring: application: name: datesource(配置数据源) mvc: view: # jsp前缀 prefix: /WEB-INF/pages/ # jsp后缀 suffix: .jsp #配置静态资源访问路径 static-path-pattern: /webapp/**(获取web项目的插件) #static-path-pattern=/webapp/** # jackson时间格式化-一个格式 jackson: time-zone: GMT+8 date-format: yyyy-MM-dd HH:mm:ss servlet: upload: drive: letter: D(上传方式) base-path: upload extend-path:(上传支持的格式) head-path: head video-path: video pic-path: pic ppt-path: ppt word-path: word excel-path: excel other-path: other multipart:(上传的流的支持) max-file-size: 10MB max-request-size: 10MB resolve-lazily: false enabled: true datasource:(淘宝的数据源特别好用) type: com.alibaba.druid.pool.DruidDataSource #当前数据源操作类型 driver-class-name: org.gjt.mm.mysql.Driver #mysql驱动包 url: jdbc:mysql://localhost:3307/springboot_demo?serverTimezone=UTC&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false username: root password: 3307 druid: filters: stat initial-size: 2 max-active: 300 max-wait: 60000 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 test-on-borrow: false test-while-idle: true test-on-return: false pool-prepared-statements: false max-pool-prepared-statement-per-connection-size: 200 validation-query: SELECT 1 filter: log4j2: enabled: true mybatis-plus: mapper-locations: classpath:mapping/*.xml #注意:一定要对应mapper映射xml文件的所在路径 type-aliases-package: com.demo.model # 注意:对应实体类的路径 logging: config: classpath:log4j2.xml level: cn.jay.repository: trace #pagehelper分页插件 #pagehelper: # helperDialect: mysql # reasonable: true # supportMethodsArguments: true # params: count=countSql
server:
port: 8888
servlet:
context-path: /
jsp:
init-parameters: true
tomcat:
uri-encoding: UTF-8
basedir: /home/tmp
spring:
application:
name: datesource
mvc:
view:
# jsp前缀
prefix: /WEB-INF/pages/
# jsp后缀
suffix: .jsp
#配置静态资源访问路径
static-path-pattern: /webapp/**
#static-path-pattern=/webapp/**
# jackson时间格式化
jackson:
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
servlet:
upload:
drive:
letter: D
base-path: upload
extend-path:
head-path: head
video-path: video
pic-path: pic
ppt-path: ppt
word-path: word
excel-path: excel
other-path: other
multipart:
max-file-size: 10MB
max-request-size: 10MB
resolve-lazily: false
enabled: true
datasource:
type: com.alibaba.druid.pool.DruidDataSource #当前数据源操作类型
driver-class-name: org.gjt.mm.mysql.Driver #mysql驱动包
url: jdbc:mysql://localhost:3307/springboot_demo?serverTimezone=UTC&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false
username: root
password: 3307
druid:
filters: stat
initial-size: 2
max-active: 300
max-wait: 60000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
test-on-borrow: false
test-while-idle: true
test-on-return: false
pool-prepared-statements: false
max-pool-prepared-statement-per-connection-size: 200
validation-query: SELECT 1
filter:
log4j2:
enabled: true
mybatis-plus:
mapper-locations: classpath:mapping/*.xml #注意:一定要对应mapper映射xml文件的所在路径
type-aliases-package: com.demo.model # 注意:对应实体类的路径
logging:
config: classpath:log4j2.xml
level:
cn.jay.repository: trace
#pagehelper分页插件
#pagehelper:
# helperDialect: mysql
# reasonable: true
# supportMethodsArguments: true
# params: count=countSql
六、log4j2.xml配置-
这个是官网的,直接复制到resources就行
<?xml version="1.0" encoding="UTF-8"?>
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
<configuration monitorInterval="5">
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--变量配置-->
<Properties>
<!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->
<!-- %logger{36} 表示 Logger 名字最长36个字符 -->
<property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight{%-5level} [%t] %highlight{%c{1.}.%M(%L)}: %msg%n" />
<!-- 定义日志存储的路径 -->
<property name="FILE_PATH" value="d:\log" />
<property name="FILE_NAME" value="dev" />
</Properties>
<appenders>
<console name="Console" target="SYSTEM_OUT">
<!--输出日志的格式-->
<PatternLayout pattern="${LOG_PATTERN}"/>
<!--控制台只输出level及其以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
</console>
<!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,适合临时测试用-->
<File name="Filelog" fileName="${FILE_PATH}/test.log" append="false">
<PatternLayout pattern="${LOG_PATTERN}"/>
</File>
<!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
<RollingFile name="RollingFileInfo" fileName="${FILE_PATH}/info.log" filePattern="${FILE_PATH}/${FILE_NAME}-INFO-%d{yyyy-MM-dd}_%i.log.gz">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<!--interval属性用来指定多久滚动一次,默认是1 hour-->
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
<!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖-->
<DefaultRolloverStrategy max="15"/>
</RollingFile>
<!-- 这个会打印出所有的warn及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
<RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/warn.log" filePattern="${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<!--interval属性用来指定多久滚动一次,默认是1 hour-->
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
<!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖-->
<DefaultRolloverStrategy max="15"/>
</RollingFile>
<!-- 这个会打印出所有的error及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
<RollingFile name="RollingFileError" fileName="${FILE_PATH}/error.log" filePattern="${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<!--interval属性用来指定多久滚动一次,默认是1 hour-->
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
<!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖-->
<DefaultRolloverStrategy max="15"/>
</RollingFile>
</appenders>
<!--Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。-->
<!--然后定义loggers,只有定义了logger并引入的appender,appender才会生效-->
<loggers>
<logger name="druid.sql.Statement" level="DEBUG" additivity="false">
<appender-ref ref="Console"/>
<appender-ref ref="Filelog"/>
</logger>
<!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
<logger name="org.mybatis" level="info" additivity="false">
<AppenderRef ref="Console"/>
<appender-ref ref="Filelog"/>
</logger>
<!--监控系统信息-->
<!--若是additivity设为false,则 子Logger 只会在自己的appender里输出,而不会在 父Logger 的appender里输出。-->
<Logger name="org.springframework" level="info" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
<root level="DEBUG">
<appender-ref ref="Console"/>
<appender-ref ref="Filelog"/>
<appender-ref ref="RollingFileInfo"/>
<appender-ref ref="RollingFileWarn"/>
<appender-ref ref="RollingFileError"/>
</root>
</loggers>
</configuration>
七、文件结构建立(根据yml)
7.1 webapp文件夹建立
resources的同级!
main->new->directory->webapp(叫webapp是要和yml文件自设的一样,若改都改)
ctrl+shift+alt+s
点进去选webapp
有蓝点点了
按照yml继续创建下一级(取消勾选才能展开)
7.2 配置文件们
upload上传下载
WEB-INF.pages页面
mapping是路径转换
对应这些 mybatis-plus: mapper-locations: classpath:mapping/*.xml #注意:一定要对应mapper映射xml文件的所在路径 type-aliases-package: com.demo.model # 注意:对应实体类的路径 logging: config: classpath:log4j2.xml level: cn.jay.repository: trace
7.3 java 内文件
java->new->package->com.demo.model
controller
把com.demo.service也填上
八、启动项
com.demo右键-》new-》java class-》名字随便
package com.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication//项目启动类的注解
public class StringBootStarMain {
public static void main(String[] args) {
SpringApplication.run(StringBootStarMain.class,args);
}
}
九 项目启动配置
9.1 Tomcat配置
9.2 启动方式一:项目部署到Tomcat
9.3 启动方式二:添加springboot
9.4 在启动页右键运行
出现这个就是运行成功