springboot--概述

目录

概述:

1.什么是springboot

2.为什么要学习SpringBoot

3.SpringBoot的特点

4.缺点

5.SpringBoot自动配置的原理

概述:

  1. 简化spring应用开发的一个框架
  2. 整个spring技术栈的一个大整合
  3. J2EE开发的一站式解决方案

1.什么是springboot

  1. SpringBoot是Spring家族中的一个子工程
  2. 快速的构建庞大的spring项目,并且尽可能的减少一切xml配置,让我们关注与业务而非配置。
  3. 让我们写更少的代码!

2.为什么要学习SpringBoot

java一直被人诟病的一点就是臃肿、麻烦。当我们还在辛苦的搭建项目时,可能Python程序员已经把功能写好了,究其原因注意是两点:

  • 一个是复杂的配置,需要些大量的配置,这就需要大量的代码!让整个项目看着一点都不优雅!

  • 一个是混乱的依赖管理。决定项目里要用哪些库就已经够让人头痛的了,主要是依赖版本之间的冲突,这难题实在太棘手。并且,依赖管理也是一种损耗

而SpringBoot让这一切成为过去!

Spring Boot 简化了基于Spring的应用开发,只需要“run”就能创建一个独立的、生产级别的Spring应用。Spring Boot为Spring平台及第三方库提供开箱即用的设置(提供默认设置,存放默认配置的包就是启动器starter),这样我们就可以简单的开始。多数Spring Boot应用只需要很少的Spring配置。

我们可以使用SpringBoot创建java应用,并使用java –jar 启动它,就能得到一个生产级别的web工程。

3.SpringBoot的特点

  1. 快速创建独立运行的spring项目以及主流框架集成
  2. 使用嵌入式的servlet容器,应用无需打成war包,可以打成jar包以java -jar xxx.jar的命令运行项目
  3. starters自动依赖与版本控制
  4. 大量自动化配置简化开发,也提供入口修改默认配置
  5. 无需xml,无代码生成
  6. 准生产环境的运行时应用监控
  7. 与云计算的天然集成

4.缺点

入门容易精通难

5.SpringBoot自动配置的原理

1.我们需要要使用springboot首先需要引入springboot父类工程


    org.springframework.boot
    spring-boot-starter-parent
    2.0.0.RELEASE

2.我们开发一个web项目需要引入一个web启动类springboot会给我们自动配置

 

 
     org.springframework.boot
     spring-boot-starter-web
 

启动类 这个类放在靠前的包下

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

springboot的运行原理:

  • 注解:@SpringBootApplication 启动类上的注解相当于@ComponentScan、@EnableAutoConfiguration、@SpringBootConfiguration这三个注解

    进入@SpringBootApplication 注解上有三个注解

    • 1)@ComponentScan(扫描spring组件注解)

      扫描spring组件的注解,如果不配置属性的话他会扫描所在包以及子包,所以一般我们会将启动类放在靠前的包下

    • 2)@EnableAutoConfiguration(开启自动配置类注解)

      SpringBoot内部对大量的第三方库或Spring内部库进行了默认配置,这些配置是否生效,取决于我们是否引入了对应库所需的依赖,如果有那么默认配置就会生效。

    • 3)@SpringBootConfiguration(声明是springBoot的配置类)

      进入这个注解发现这个注解上有一个@configuration注解,是声明这是一个配置类的意思,spring会自动扫描添加了@configuration的类 所以我们要把启动类放在最前面的包!因为他默认扫描本包和本包以下的所有子包中的spring组件!

    小结:SpringBoot为我们提供了默认配置,而默认配置生效的条件一般有两个:

    • 1)引入了相关依赖 (web项目,就需要引入web启动器,这样springboot内部会做出判断,这样自定义配置就会生效)

    • 2)你自己没有配置Bean(比如数据源DataSource)如果spring扫描到你自己注入了,他就不会启动默认的数据源连接池

      所以,我们如果不想配置,只需要引入依赖即可,而依赖版本我们也不用操心,因为只要引入了SpringBoot提供的stater(启动器),就会自动管理依赖及版本了。

      因此,玩SpringBoot的第一件事情,就是找启动器,SpringBoot提供了大量的默认启动器

      全局配置:

      另外,SpringBoot的默认配置,都会读取默认属性,而这些属性可以通过自定义application.properties文件来进行覆盖。这样虽然使用的还是默认配置,但是配置中的值改成了我们自定义的。

      因此,玩SpringBoot的第二件事情,就是通过application.properties来覆盖默认属性值,形成自定义配置。我们需要知道SpringBoot的默认属性key,非常多.

       

      属性文件支持两种格式,application.properties和application.yml

      yml的语法实例:

      jdbc:
        driverClassName: com.mysql.jdbc.Driver
        url: jdbc:mysql://127.0.0.1:3306/xxx
        username: root
        password: root
      ​
      server:
        port: 80

       

注解积累

@Configuration 声明配置类
@Bean 注入实体 在配置类中注入bean方法上使用  value属性指定注入bean的id
@ConfigurationProperties(prefix = "person") 将配置文件中的属性值映射到类上,在实体类上使用prefix 前缀
@ImportResource(value = {"classpath:xmlFile/*.xml"}) 指定spring xml 配置文件地址 在配置类上使用

扩展

设置自定义yml文件位置在配置类声明

  /**
     * 设置自定义yml位置
     *
     * @return
     */
    @Bean
    public static PropertySourcesPlaceholderConfigurer properties() {
        PropertySourcesPlaceholderConfigurer pspc = new PropertySourcesPlaceholderConfigurer();
        YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
        yaml.setResources(
                new ClassPathResource[] {
                        /** 例子 */
                        new ClassPathResource("config/person.yml")
                });
        pspc.setProperties(yaml.getObject());
        return pspc;
    }

 

 

 

你可能感兴趣的:(spring,Boot,springboot)