Springboot

Springboot概述

  1. 虽然spring的组件代码是轻量级的,但它的配置却是重量级的,要编写大量的模板化配置文件.
  2. 项目的依赖管理复杂,在环境搭建时,需要分析要导入大量jar坐标,而且要处理他们之间的依赖关系,一旦选错版本,就会带来不兼容问题。

Spring Boot对上述spring的缺点进行的改善和优化,基于约定优于配置的思想,简化配置,还能自动管理依赖版本,避免不兼容问题。总之我们全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率。

特点

  1. 直接内嵌tomcat
  2. 以简化构建配置
  3. 尽可能的自动配置spring和第三方库
  4. 绝对不会生成代码,并且不需要XML配置

核心功能

起步依赖

起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。

自动配置

Spring Boot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。该过程是Spring自动完成的。

SpringBoot搭建

  1. 上spring官网 spring.io
  2. 点击quickstart
  3. 选择项目依赖点击生成项目

在这里插入图片描述

​ Springboot集成web组件后,内置了tomcat服务器,一个springboot应用相当于一个独立的服务,可以使用启动类中的main方法启动springboot程序.

springboot配置文件

全局配置文件

1 、application.properties文件

​ spring启动默认读取,属性文件格式,内容为键值对形式 server.port=8080

2、application.yml文件

​ 代替application.properties文件

  1. 空格不能省略
  2. 以缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的。
  3. 属性和值的大小写都是十分敏感的。
server:
  port: 8086

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/tomorrowNews_db?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 152475
    type: com.alibaba.druid.pool.DruidDataSource
    filters: stat
  main:
    allow-circular-references: true    #允许循环依赖

mybatis:
  type-aliases-package: com.ff.springboot.model
  mapper-locations: classpath:mapper/*Mapper.xml
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: true

logging:
    level:
      com.ff.springboot.dao: trace
    file:
      name: F:\\test\\logs\\log.log

注入自定义配置文件:

yaml文件更强大的地方在于,他可以给我们的实体类直接注入匹配值!

将yml中配置好的属性值注入到实体类中(person)

加入注解标签

@Component //注册bean

@ConfigurationProperties(prefix = “person”)

  • 将配置文件中配置的每一个属性的值,映射到这个组件中;
  • 告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
  • 参数 prefix = “person” : 将配置文件中的person下面的所有属性一一对应

spring启动流程

  1. 初始化spring容器,注册内置的BeanDefinition到容器中
  2. 将配置类的BeanDefinition注册到容器
  3. 刷新容器

springBoot启动流程

SpringBoot启动时,会构造一个SpringApplication对象,同时会进行初始化操作;构造完之后调用run(),run()执行的时候又会做一系列事情。

springboot自动配置

根据当前不同的条件判断,决定这个配置类是否生效!

springboot项目在启动时会扫描同级包下的所有类。

带有@Configuration注解标签的被视为配置类,配置类中的方法可以通过@ConfigurationProperties(prefix = "spring.datasource")这一注解加载配置yml文件中的配置属性,再通过@Bean标签交给spring管理,这样spring在启动的时候就会自动加载所有的配置。

自动去把第三方组件的bean装载到IOC容器里面,不需开发人员再去写bean相关配置(xml)。只需要在启动类标注@SpringbootApplication注解就可以实现自动装配,这个注解是个复合注解,包括@ComponentScan@SpringBootConfiguration@EnableAutoConfiguration

@ComponentScan会扫描与该类同级的类或者同级包下的所有类

@SpringBootConfiguration,通过源码得知它是一个@Configuration,相当于之前的配置文件功能,区别在于允许自动装配

@EnableAutoConfiguration自动加载配置项的核心注解,是利用SpringFactoriesLoader机制加载自动装配配置的,它的配置数据在spring.factories中,这里边就包含很多配置类

最终完成对这些类的自动装配,省去了模板化配置文件的编写

springboot集成JDBC

  1. 导jar坐标

    <!-- jdbc -->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-jdbc</artifactId>
    		</dependency>
    		<!-- mysql -->
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    		</dependency>
    
  2. 在yml配置文件中配置连接属性

    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://127.0.0.1:3306/tomorrowNews_db?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
        username: root
        password: root
    
  3. 就可以注入JdbcTemplate使用了

    Spring的JdbcTemplate是自动配置的,你可以直接使用@Autowired来注入到你自己的bean中来使用

springboot整合阿里数据源

  1. 导jar坐标

    <!-- druid -->
    		<dependency>
    			<groupId>com.alibaba</groupId>
    			<artifactId>druid</artifactId>
    			<version>1.1.10</version>
    		</dependency>
    
  2. 在yml文件中注册阿里数据库连接池

    spring:
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        filters: stat
        initialSize: 5
        minIdle: 1
        maxActive: 20
    
  3. 创建DruidDataSourceConfig配置类

    @Configuration
    public class DruidDataSourceConfig {
    
        /**
         * 数据库连接
         */
        @Bean
        @ConfigurationProperties(prefix = "spring.datasource")
        public DataSource druid() {
            return new DruidDataSource();
        }
    
        /**
         * sql监控,注册哪些ip可以访问druid中的sql监控功能
         */
        @Bean
        public ServletRegistrationBean druidStatViewServlet() {
            //ServletRegistrationBean提供类的进行注册
            ServletRegistrationBean servletRegistrationBean =
                    new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
            //添加初始化参数:initParams
            //白名单:
            servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
            //IP黑名单(同时存在时,deny优先于allow)
            //如果满足deny,就提示:sorry,you are not permitted to view this page
            servletRegistrationBean.addInitParameter("deny", "127.0.0.2");
            //登录查看信息的账号和密码
            servletRegistrationBean.addInitParameter("loginUsername", "admin");
            servletRegistrationBean.addInitParameter("loginPassword", "000");
            servletRegistrationBean.addInitParameter("resetEnable", "false");
            return servletRegistrationBean;
        }
    
    
        /**
         *
         */
        @Bean
        public FilterRegistrationBean druidStatFilter() {
            FilterRegistrationBean filterRegistrationBean =
                    new FilterRegistrationBean(new WebStatFilter());
            //添加过滤规则
            filterRegistrationBean.addUrlPatterns("/*");
            //添加需要忽略的格式信息
            filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif," +
                    "*.jpg,*.png, *.css,*.ico,/druid/*");
            return filterRegistrationBean;
        }
    
    }
    

    可通过访问 http://localhost:9999/druid/login.html对sql进行监控

SpringBoot集成mybatis

  1. 导jar坐标

    <!-- mybatis -->
    		<dependency>
    			<groupId>org.mybatis.spring.boot</groupId>
    			<artifactId>mybatis-spring-boot-starter</artifactId>
    			<version>2.1.4</version>
    		</dependency>
    
  2. 配置yml属性

    mybatis:
      type-aliases-package: com.ff.springboot.model   #别名
      mapper-locations: classpath:mapper/*Mapper.xml  #mapper位置
      configuration:
        map-underscore-to-camel-case: true  #驼峰映射
        cache-enabled: true   #二级缓存
    
  3. 在SpringbootApplication类中添加注解@MapperScan(“com.ff.springboot.dao”)

    指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类

  4. 其余和之前spring相同

日志打印

  1. 在yml文件中配置属性

    logging:
      level:
        com.ff.springboot.dao: trace
      file:
        name: F:\\test\\logs\\log.log
    
  2. 创建log4j.properties文件

    log4j.rootLogger = debug,stdout,D
    #System out Console
    log4j.appender.stdout = org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target = System.out
    log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern = [%p] %d{yyyy-MM-dd HH:mm:ss,SSS} %m%n
    
    #System out File
    log4j.appender.D = org.apache.log4j.FileAppender
    log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.D.File = F:/test/logs/log.log
    log4j.appender.D.Append = true
    log4j.appender.D.layout = org.apache.log4j.PatternLayout
    log4j.appender.D.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ] -[%l] %m%n
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EnndmeRedis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值