SpringBoot学习笔记--更新中

##SpringBoot
Spring Boot 是所有基于 Spring 开发的项目的起点。Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的配置文件。

优点

  • 无需配置xml,无代码生成
  • 无需打包war,而是jar

微服务

一组小型服务,通过http进行沟通
每个单元度

单体应用

传统web应用,所有功能和模块全部部署在一个应用里

jar包运行

Spring-boot-maven-plugin可以用maven把springboot应用打jar

pom文件探究

  • springboot-starter-dependencies:版本仲裁中心,以后导入依赖不需要写版本,在父pom中声明

  • springboot-starter-web:场景启动器 帮我们导入运行需要的组件:tomcat springweb、webmvc

主程序类

  • @SprignbootAppliction 标志类(Springboot主配置类)
  • @SpringbootConfiguration 类(Springboot一个配置类) 底层使用Configuration实现
  • @EnableAutoConfiguration 类(开启自动配置) springboot帮我们自动配置
  • @AutoConfigurationPackage自动配置包(主配置类所在包下类扫描)

@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
@Configuration
@ComponentScan
这三个等同于@SpringBootApplication

@RestController等同于 @ResponseBody和@Controller

自动配置很强大
springboot下autoconfiguration包内存储我们需要的类,sringboot帮我们配置

创建SpringBoot项目

Spring Initialize可以帮助我们创建SpringBoot项目

Springboot配置文件

全局配置文件

命名固定

  • application.properties
  • application.yml
    yaml: 以数据为中心,比xml和json更适合

配置文件注入值

  • [email protected](prefix=“”)支持jsr303数据校验
  • 2.属性上添加 @Value(¥{user.username})复杂类型不能封装,只能使用基本数据类型

@PropertySource使用路径下的配置文件

例:

@PropertySource(value = "{classpath:user.properties}")

加入我们编写的配置文件

[email protected] 标注在配置类上(不推荐)

@ImportResource(value = {"classpath:bean.xml"})

2.推荐使用注解给容器中添加组件(编写配置类)
@Bean 标注方法上 返回值为该组件 方法名为该组件id

#YAML格式
environments:
    dev:
        url: http://dev.bar.com
        name: Developer Setup
    prod:
        url: http://foo.bar.com
        name: My Cool App
my:
    servers:
        - dev.bar.com
        - foo.bar.com

处理器:写配置文件有提示
我们可以添加下面依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

SpringBoot占位符

  • 随机数:可以在配置文件中使用#{random.uuif}等
  • 占位符获取之前设置的值,如果没有,可以使用默认值#{userAge:默认值}

profile

Spring对不同环境提供不同的配置功能的支持(发布、生产、测试等环境)
例:

  • application_dev.yml
  • application_prod.yml

yml、properties
可以使用spring.profiles.active=dev,prod也可以在命令行使用–spring.profiles.active=dev,prod参数

日志

springboot能自动适应所有的日志框架 底层使用slf4j和logback

在这里插入图片描述

日志级别

springboot默认级别是info级别(只输出info和以后级别)

  • trace
  • debug
  • info
  • warn
  • error

调整级别

#com.dingxiang下的日志都以trace级别输出
logging.level.com.dingxiang=trace

springboot指定路径生成日志文件

logging.path=/spring/log
logging.file=springboot_logging

设置自定义日志格式 logging.pattern.console

日志指定配置

在指定路径下放置对应的日志文件 ex:在根目录下放置logback.xml
logback-spring.xm可以使用springboot的高级功能可以设置多profile环境配置

切换日志框架

所有的日志都统一到slf4j的解决方案:

  1. 将系统中其他日志框架先排除出去;
  2. 用中间包来替换原有的日志框架;
  3. 导入slf4j其他的实现。

SpringBoot Web 开发

pom资源引入:webjars


webjars maven

静态资源

默认情况下,Spring Boot 将在 classpath 或者 ServletContext 根目录下从名为

/static 
/public
/resources 
/META-INF/resources

目录中服务静态内容。它使用了 Spring MVC 的 ResourceHttpRequestHandler

模板引擎

模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。

springboot 使用的thymeleaf
放在classpath:src/main/resources/templates

在这里插入图片描述

语法

(1)th任意html元素
th:text 文本 th:class th:id
(2)方法调用
语法案例:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>成功</h1>
<div th:text="${hello}"></div>
</body>
</html>

扩展SpringMVC

编写配置类继承WebMvcConfigurerAdapter 实现对应的方法
使得springboot既可以使用自动配置,也可以使用我们的扩展配置

eg 扩展controller:

public void addViewControllers(ViewControllerRegistry registry) {
//        super.addViewControllers(registry);
registry.addViewController("/").setViewName("success");

Springboot 整合Mybatis

maven依赖

<!-- 最重要的是这个POM配置,MyBatis相关操作都在这个包中 -->
    <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>
    </dependency>

配置文件

(1)application.yml或者properties配置datasource(Springboot自动帮你配置sqlsessionfactory 默认使用的是HikariDataSource)

spring.datasource.url=jdbc:mysql://localhost:3306/springboot?serverTimezone=GMT&autoReconnect=true
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# mysql
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/springboot?serverTimezone=GMT&autoReconnect=true
    username: root
    password: 52zoufubo
    driver-class-name: com.mysql.cj.jdbc.Driver

(2)配置mybatis扫描包别名和Mapper.xml文件路径

mybatis.typeAliasesPackage=com.dingxiang.springboot_web_01.entities
mybatis.mapperLocations=classpath:mapper/*.xml
mybatis:
  type-aliases-package: com.dingxiang.springboot_web_01.entities
  mapper-locations: classpath:mapper/*Mapper.xml

(3)在Springboot启动类中添加Mapper接口扫描注解

@MapperScan(basePackages = {"com.dingxiang.springboot_web_01.mapper"})

一些工具使用

dto转entity:使用spring中的BeanUtils

BeanUtils.copyProperties(userInputDTO,user);
  • 本文作者: dzou | 微信:17856530567
  • 本文链接: http://www.dzou.top/post/cfc248db.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
  • 并保留本声明和上方二维码。感谢您的阅读和支持!