**
Spring boot
**
1.springboot 概念
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该 框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致 力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
**2.springboot 的优势
**
-
创建独立的Spring应用程序
-
嵌入的Tomcat,无需部署WAR文件
-
简化Maven配置
-
自动配置Spring
-
没有XML配置
spring 1.x .xml配置文件
spring 2.x 注解 数据持久层使用 xml 业务层使用注解 spring 3.x java配置
spring 4.x java配置
spring 5.x java配置注意:
@Bean 用在方法上 表明当前方法的返回值交由工厂管理
@configuration 用在类上 表示当前类是一个配置类
3.springboot的约束
src/main/java
com.dao
com.service
com.entity
com.controller
入口类 :在主包下和子包同级
src/main/resources 注意 :配置文件必须放在resouces下,文件名必须是以下三种之一
xml
@configuration
@Bean
application一个字母都不能错
application.yml application.yaml application.properties
src/test/java src/test/reources
*
*4.使用idea搭建springboot的第一个环境
1.导入jar**
<!-- 父级项目依赖 --> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactI d>
<version>1.4.1.RELEASE</version>
</parent>
<!-- 对web支持的jar springboot的启动器 --> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 对测试支持的jar --> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactI d>
<!-- 只在test测试里面运行 --> <scope>test</scope>
</dependency>
2.开发入口类
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}
}
3.配置文件
server:
port: 8989
context-path: /springboot
*注意
配置文件yml | yaml 属性名和属性值之间有空格
默认启动端口号 8080 需要改变端口号
默认启动没有项目名
4.注解剖析
@SpringBootApplication=@Configuration+@EnableAutoConfiguration+@ComponentScan 1.@Configuration //声明当前类是一个配置类
2.@ComponentScan //作用 组件的扫描 @service @controller @compoment@repository
3.@EnableAutoConfiguration //作用 开启自动配置
@RestController=@controller+@responsebody //当前的类所有的方法返回值都是json
springboot 默认不支持jsp 默认支持的是thmyleaf 5.快速构建springboot项目
注意 一定将版本号改为1.5.8
注意 jdk 至少1.8
6.springboot集成第三方插件 (技术)*
1.mybatis
导入依赖包
<!--mybatis jar-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency><!--mysql jar-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!--Druid jar-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.19</version>
</dependency>
<!--springboot对mybatis支持的jar-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
2.springboot集成lombok
1.概念 使java代码便变得更优雅,一注解的形式代替之前冗余的代码
2.下载插件
3.导入jar
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
<scope>provided</scope>
</dependency>
4.常用的注解
@Data 注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、 hashCode、toString 方法
@Setter :注解在属性上;为属性提供 setting 方法
@Getter :注解在属性上;为属性提供 getting 方法
@Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
@NoArgsConstructor :注解在类上;为类提供一个无参的构造方法
@AllArgsConstructor :注解在类上;为类提供一个全参的构造方法
@NonNull : 如果给参数加个这个注解 参数为null会抛出空指针异常
@Value : 注解和@Data类似,区别在于它会把所有成员变量默认定义为private final修饰,并且不会生成set 方法
3.MBG (mybatis-generator) 反向生成
1.相关的介绍
根据数据库中的表对应生成 dao 实体类 mapper
2.使用
a:导入相应的jar 和 插件
<!-- 所需要的jar --> <dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
<!-- 所需要的插件 --> <plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
</dependencies>
<configuration>
<!--配置文件的路径 -->
<configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
</configuration>
</plugin>
注意 : 插件中的数据库jar 需要先在依赖中下载后才能使用
b:配置文件 generatorConfig.xml
配置文件放在resources下
<?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>
<context id="test" targetRuntime="MyBatis3">
<plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"></plugin>
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"></plugin>
<commentGenerator>
<!-- 数据库中的日期类型 如果是false则生成string类型的日期 -->
<property name="suppressDate" value="true" />
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库链接URL,用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost/cmfz" userId="root" password="root">
</jdbcConnection>
<!-- java类型的解析 把数据库中的类型解析成java类型 --> <javaTypeResolver>
<!-- This property is used to specify whether MyBatis Generator should
force the use of java.math.BigDecimal for DECIMAL and NUMERIC fields, -->
<!-- 如果为true则数字的精度高,用于金钱等 -->
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 生成模型的包名和位置 -->
<javaModelGenerator targetPackage="com.entity"
targetProject="src/main/java">
<!-- 是否将生成的包名和位置合并(将com.entity放到src/main/java下) --> <property name="enableSubPackages" value="true" />
<!-- 去除String字符串中的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- 生成映射文件的包名和位置 -->
<sqlMapGenerator targetPackage="com.mapper"
targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- 生成DAO的包名和位置 -->
<!-- XMLMAPPER不需要关注 --> <javaClientGenerator type="XMLMAPPER"
targetPackage="com.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- 要生成哪些表 -->
<!-- domainObjectName实体类名 -->
<table tableName="album" domainObjectName="Album"
enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false"></table>
</context>
</generatorConfiguration>
插件运行:
在右侧边栏的maven哪里
4.springboot集成jsp
1.导入jar 和 插件
<!-- 所需要的jar --> <dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!-- 插件 快速构建的项目不需要--> <plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
配置配置文件
<!-- 视图解析器的动态参数 --> spring:
mvc: view:
prefix: /
suffix: .jsp
<!-- 支持热部署-->
server:
jsp-servlet:
init-parameters:
development: true
注意 : 想要使用jsp 需要插件启动 5.springboot中的小细节
1.乱码
springboot 默认的编码格式就是 UTF-8
手动指定编码格式如下
spring:
http:
encoding:
charset: utf-8
force: true
2.文件上传
默认 单个文件大小为 1MB
多个文件同时上传大小为 10MB
更改文件上传大小
spring
multipart:
max-file-size: 10MB
max-request-size: 200MB
3.静态资源文件
get请求会先找静态资源,如果没有静态资源再去找controller
post回去找controller
4.测试
springboot 导入了对测试的支持 不需要导入junit
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
springboot中测试用的注解
@RunWith(SpringRunner.class)
@SpringBootTest
5.配置文件的拆分
主配置文件 公用配置的参数
小配置文件 配置的是经常变动的参数
6.Fastjson
1.导入jar
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.54</version>
</dependency>
2.fastjson的Java配置
@Bean
public HttpMessageConverters fastJsonHttpMessageConverters() {
// 1. 需要定义一个converter转换消息的对象 FastJsonHttpMessageConverter fasHttpMessageConverter = new
FastJsonHttpMessageConverter();
// 2. 添加fastjson的配置信息,比如:是否需要格式化返回的json的数据 FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); // 3. 在converter中添加配置信息 fasHttpMessageConverter.setFastJsonConfig(fastJsonConfig); HttpMessageConverter<?> converter = fasHttpMessageConverter;
return new HttpMessageConverters(converter);
}
7.日志
日志的类别
debug—info—warn—error
父日志(根日志) 整个项目的日志信息 子日志 某个包的日志
Appender 为日志输出目的地
rg.apache.log4j.ConsoleAppender(控制台), org.apache.log4j.FileAppender(文件), org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
Layout:日志输出格式
oorg.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
打印参数
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd
HH:mm:ss , SSS},输出类似:2002年10月18日 22 : 10 : 28 , 921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:
Testlog4.main(TestLog4.java: 10 )
logback.xml 效率更高
springboot 用的就是logback.xml 无需导入jar