SpringBoot笔记

**

Spring boot

**

1.springboot 概念

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该 框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致 力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

**2.springboot 的优势

**

  1. 创建独立的Spring应用程序

  2. 嵌入的Tomcat,无需部署WAR文件

  3. 简化Maven配置

  4. 自动配置Spring

  5. 没有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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值