栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot

目录
  • 回顾spring
      • 优点
      • 缺点
  • springboot概述
      • 特点
      • 核心功能
  • SpringBoot搭建
  • springboot配置文件
      • 全局配置文件
  • springboot自动配置
  • springboot集成JDBC
  • springboot整合阿里数据源
  • SpringBoot集成mybatis
  • 日志打印

回顾spring 优点
  1. 开源,轻量级,非侵入式的一站式框架,简化企业级应用开发。
  2. 控制反转(IOC),依赖注入(DI)降低了组件之间的耦合性,实现了软件各层之间的解耦。
  3. 面向切面(AOP),利用它可以很容易实现一些拦截,如事务控制等。
  4. spring对于主流的应用框架提供了很好的支持,例如mybatis。
  5. spring提供有自己的mvc实现。
缺点
  1. 虽然spring的组件代码是轻量级的,但它的配置却是重量级的。虽然spring引入了注解功能,但是仍然需要编写大量的模板化配置文件.
  2. 项目的依赖管理也是一件耗时耗力的事情,在环境搭建时,需要分析要导入大量库的坐标,而且还需要分析导入与之有依赖关,一旦选错依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。

​ Spring Boot对上述spring的缺点进行的改善和优化,基于约定优于配置的思想.可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。

springboot概述

​ Spring Boot是由Pivotal团队提供的在spring框架基础之上开发的框架,其设计目的是用来简化应用的初始搭建以及开发过程。

Spirng Boot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具.

Spring Boot以约定大于配置的核心思想,从而使开发人员不再需要定义样板化的配置。它集成了大量常用的第三方库配置(例如Redis,Jpa RabbitMQ,Quartz等等),Spring Boot应用中这些第三方库几乎可以零配置的开箱即用,通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域成为领导者。

Spring Boot你只需要“run”就可以非常轻易的构建独立的、生产级别的spring应用。

我们为spring平台和第三方依赖库提供了一种固定化的使用方式,使你能非常轻松的开始开发你的应用程序。大部分SpringBoot应用只需要很少的配置。

特点
  1. 创建独立的spring应用程序
  2. 直接内嵌tomcat、jetty和undertow
  3. 提供了固定化的“starter”配置,以简化构建配置
  4. 尽可能的自动配置spring和第三方库
  5. 提供产品级的功能,如:安全指标、运行状况监测和外部化配置等
  6. 绝对不会生成代码,并且不需要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下面的所有属性一一对应
springboot自动配置

Springboot实现自动装配的核心仍然是使用注解标签

@MapperScan("com.ff.springboot.dao")
@SpringBootApplication
public class SpringbootApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringbootApplication.class, args);
	}
}

@SpringBootApplication : 是Spring Boot 项目的核心注解 主要目的是开启自动配置

组合注解,主要组合了@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan

@ComponentScan它默认扫描的是与该类同级的类或者同级包下的所有类.

@SpringBootConfiguration,通过源码得知它是一个@Configuration,相当于之前的配置文件功能.

@EnableAutoConfiguration自动加载配置项的核心注解

点开其源码

@import({AutoConfigurationimportSelector.class})

可根据我们在pom.xml文件中配置来加载对应的组件

是这里最重要的注解,它实现了对Spring Boot应用自动装配的功能。@EnableAutoConfiguration是利用SpringFactoriesLoader机制加载自动装配配置的,它的配置数据在meta-INF/spring.factories中,我们打开spring-boot-autoconfigure jar中的该文件,发现对应着许多个XXXAutoConfiguration配置类.

@Configuration

加入@Configuration 注解,表明这就是一个配置类。有一个myBean()的方法并用@Bean 进行注释,返回一个MyBean()的实例,表明这个方法是需要被Spring进行管理的bean。@Bean 如果不指定名称的话,默认使用myBean名称,也就是小写的名称。

@Bean

相当于XML中的< bean> < /bean>,放在方法的上面,而不是类,意思是产生一个bean对象,并交给spring管理。

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

  • 一但这个配置类生效;这个配置类就会给容器中添加各种组件;
  • 这些组件的属性是从对应的properties类中获取的,这些类里面的每一个属性又是和配置文件绑定的;
  • 所有在配置文件中能配置的属性都是在xxxxProperties类中封装着;
  • 配置文件能配置什么就可以参照某个功能对应的这个属性类

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

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

springboot集成JDBC
  1. 导jar坐标

    		
    			org.springframework.boot
    			spring-boot-starter-jdbc
    		
    		
    		
    			mysql
    			mysql-connector-java
    		
    
  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坐标

    		
    			com.alibaba
    			druid
    			1.1.10
    		
    
  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();
        }
    
        
        @Bean
        public ServletRegistrationBean druidStatViewServlet() {
            //ServletRegistrationBean提供类的进行注册
            ServletRegistrationBean servletRegistrationBean =
                    new ServletRegistrationBean(new StatViewServlet(), "/druid
        @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坐标

    		
    			org.mybatis.spring.boot
    			mybatis-spring-boot-starter
    			2.1.4
    		
    
  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
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/691418.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号