SpringBoot笔记

    xiaoxiao2022-07-13  176

    **

    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

    最新回复(0)