美文网首页
SpringBoot简单回顾

SpringBoot简单回顾

作者: 弹钢琴的崽崽 | 来源:发表于2020-07-16 20:47 被阅读0次

    1. Java开发的痛点

    Xml引入不生效

    调试tomcat缓存,启动慢

    引用Jar容易混淆丢失,版本冲突

    搭建慢

    2. 入门介绍

    SpringBoot是什么?为什么使用SpringBoot?

    (1)Springboot 是spring的高铁,使用它你可以更快捷的使用spring的其他特性

    1. 创建独立Spring应用,java -jar运行
    2. 嵌入Tomcat jetty,而不需要部署它们,也可以使用tomcat
    3. 提供的“starters” poms来简化maven配置
    4. 尽可能自动配置spring应用
    5. 提供生产指标,健壮检查和外部化配置
    6. 绝对没有代码生成和xml配置要求

    (2)Springboot 提供了丰富的Starter组件

    启动Springboot的几种方式

    1. 启动Spring Boot项目最简单的方法就是执行下面的方法:SpringApplication.run(Application.class, args);该方法返回一个ApplicationContext对象。

    2. SpringApplication application = new SpringApplication(Application.class);
      application.run(args);
      

      SpringApplication包含了一些其他可以配置的方法,如果你想做一些配置,可以用这种方式。

    3. SpringApplicationBuilder
          new SpringApplicationBuilder()
          .showBanner(false)
          .sources(Application.class)
          .run(args);
      

      SpringApplicationBuilder包含了更多配置,如当需要使用子容器,就需要用到SpringApplicationBuilder,该类有一个child(xxx...)方法可以添加子容器

    Spring容器加载前后做些事-addEvent

    Spring-boot提供一些事件,顺序如下:

    ApplicationStartingEvent:除了基础的注册监听和初始化之外,在开始运行时做任何处理动作之前发送

    ApplicationEnvironmentPreparedEvent:在上下文中使用的环境已知,但是Context尚未创建之前发送.

    ApplicationPreparedEvent: 在Spring刷新Context开始之前,而仅当加载bean定义之后发送.

    ApplicationStartedEvent: 在刷新上下文之后,但在调用任何应用程序(ApplicationRunner)和命令行运行程序(CommandLineRunner)之前发送.

    ApplicationReadyEvent: 在调用应用程序和命令行运行程序后发送。 它表示应用程序已准备好为请求提供服务.

    ApplicationFailedEvent: 在启动过程中出现异常.

    基础功能-接收启动命令

    CommandLineRunner接口

    如果bean在SpringApplication启动成功时,需要做一些处理,可以实现CommandLineRunner接口,可以接收启动时的命令

    注:如果多个bean需要按照一定顺执行run,可以实现org.springframework.core.annotation.Order做排序

    基础功能-配置

    外部配置

    配置文件名称默认:application.properties

    @Value注入配置

    @ConfigurationProperties配置绑定到对象

    @ConfigurationProperties(prefix=“connection”)

    匹配前缀使用prefix,并通过@EnableConfigurationProperties启用配置

    外部配置 生产和开发

    spring.profiles.active=dev

    命令行参数:--spring.profiles.active=dev

    Java系统属性:-Dspring.profiles.active=dev

    配置文件中定义

    配置加载优先级

    1. 命令行参数
    2. 来自java:comp/env的JNDI属性
    3. Java系统属性(System.getProperties())
    4. 操作系统环境变量
    5. RandomValuePropertySource配置的random.*属性值
    6. jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
    7. jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
    8. jar包外部的application.properties或application.yml(不带spring.profile)配置文件
    9. jar包内部的application.properties或application.yml(不带spring.profile)配置文件
    10. @Configuration注解类上的@PropertySource
    11. 通过SpringApplication.setDefaultProperties指定的默认属性

    配置配置文件的位置

    spring会从classpath下的/config目录或者classpath的根目录查找application.properties或application.yml

    /config优先于classpath根目录

    基础功能-日志管理

    Logging

    在使用Starter POMS时,Logback作为默认日志,可以引入logback.xml

    输出内容如下:

    时间日期-­‐精确到毫秒.

    日志级别 — ERROR,WARN, INFO, DEBUG orTRACE.

    进程 ID,对应jps输出的ID.

    Logback默认输出ERROR、WARN和INFO

    $java -jar myapp.jar --debug开启debug日志

    或者application.properties中添加debug=true,当然也可以通过xml配置

    Application.properties中添加如下:

    logging.level.* //作为package(包)的前缀来设置日志级别

    logging.file.path=/data/log //日志保存在该目录下

    logging.file.name=demo.log //按照定义日志名称保存在项目名下

    默认写入10M内容将循环重写

    可以根据需要对不同的包路径定义不同级别日志

    在application.properties中添加

    logging.level.root=WARN

    logging.level.org.springframework.web=ERROR

    logging.level.com.dragonsoft.demo=DEBUG

    3. web应用搭建

    如何添加web功能

    添加starter:spring-boot-starter-web嵌入式tomcat

    使用spring-mvc注解

    静态资源

    spring boot默认加载文件的路径是

    /META-INF/resources/

    /resources/

    /static/

    /public/

    例如:在classpath下建static/css/man.css

    访问http://localhost:8080/css/man.cs

    Freemarker视图解析

    配置application.properties

    spring.freemarker.tempalte-loader-path=classpath:/templates
    spring.freemarker.suffix=.ftl
    # 关闭缓存,及时刷新,上线生产环境需要修改为true
    spring.freemarker.cache=false
    spring.freemarker.charset=UTF-8
    #是否检查模板位置是否存在
    spring.freemarker.check-template-location=true
    spring.freemarker.content-type=text/html
    #设定所有request的属性在merge到模板的时候,是否要都添加到model中
    spring.freemarker.expose-request-attributes=true
    #是否在merge模板的时候,将HttpSession属性都添加到model中
    spring.freemarker.expose-session-attributes=true
    

    Filter

    访问http://localhost:8080/

    4. 扩展功能介绍

    JDBC

    引入:spring-boot-starter-jdbc与mysql驱动pom

    在application.properties中添加如下配置

    spring.datasource.url=jdbc:mysql://192.168.10.20:3306/wq_test?characterEncoding=utf8&serverTimezone=GMT%2B8
    spring.datasource.username=root
    spring.datasource.password=mysql
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    

    @EnableAutoConfiguration

    开启自动配置

    告诉SpringBoot基于所添加的依赖,去“猜测”你想要如何配置Spring。

    比如我们引入了spring-boot-starter-web,而这个启动器中帮我们添加了tomcat、SpringMVC的依赖

    此时自动配置就知道你是要开发一个web应用,所以就帮你完成了web及SpringMVC的默认配置了!

    SpringBoot内部对大量的第三方库或Spring内部库进行了默认配置

    这些配置是否生效,取决于我们是否引入了对应库所需的依赖

    如果有那么默认配置就会生效

    我们使用SpringBoot构建一个项目,只需要引入所需框架的依赖,配置就可以交给SpringBoot处理了

    @ComponentScan

    配置组件扫描的指令

    提供了类似与<context:component-scan>标签的作用

    通过basePackageClasses或者basePackages属性来指定要扫描的包。

    如果没有指定这些属性,那么将从声明这个注解的类所在的包开始,扫描包及子包

    而我们的@SpringBootApplication注解声明的类就是main函数所在的启动类,

    因此扫描的包是该类所在包及其子包。因此,一般启动类会放在一个比较前的包目录中。

    Condition

    开启自动配置

    告诉SpringBoot基于所添加的依赖,去“猜测”你想要如何配置Spring。

    比如我们引入了spring-boot-starter-web,而这个启动器中帮我们添加了tomcat、SpringMVC的依赖

    此时自动配置就知道你是要开发一个web应用,所以就帮你完成了web及SpringMVC的默认配置了!

    SpringBoot内部对大量的第三方库或Spring内部库进行了默认配置

    这些配置是否生效,取决于我们是否引入了对应库所需的依赖

    如果有那么默认配置就会生效

    我们使用SpringBoot构建一个项目,只需要引入所需框架的依赖,配置就可以交给SpringBoot处理了

    相关文章

      网友评论

          本文标题:SpringBoot简单回顾

          本文链接:https://www.haomeiwen.com/subject/myimhktx.html