电商项目 - 配置方式 03

        如果我们需要在SpringBoot应用中整合一种新的开发场景,只需在pom.xml引入对应的starter即可

        一个starter不仅包含依赖,还包含相应的配置,starter中包含的配置都是通过Java类实现的——Java配置方式

Spring版本迭代及配置方式发展

  1. Spring 1.x : 所有的bean的配置只能通过xml完成

  2. Spring 2.x : 基于JDK1.5对注解的支持,Spring 2.x开始支持注解
    企业开发中到底是用xml配置还是用注解?
    对基础配置、引用的第三方依赖中的配置使用xml完成:例如数据源配置
    业务开发使用注解:例如controller、service

  3. Spring 3.x : 开始提供基于Java的配置方式

  4. Spring 4.x : xml、注解、Java配置

1.xml配置

<!--applicationContext.xml-->
<bean id="stu" class="com.qfedu.beans.Student"></bean>
<bean id="date" class="java.util.Date"></bean>

2.注解配置

@Component
public class Student{
    //用于自定义类的配置
}

3.Java配置方式(创建配置类)

@Configuration
public class SpringConfig{
    //将自定义类或第三方类交给Spring容器管理
    //常用于第三方类配置 java.util.Date
    @Bean
    public Date getDate(){
        return new Date();
    }
}

4.SpringBoot自动配置

  1.  一个SpringBoot应用,会通过添加第三方依赖和配置类(java配置方式)来完成需求的整合,也就是说通过在pom.xml添加starter第三方依赖及在application.yml等添加第三方配置信息,完成第三方组件的引入。
  2. SpringBoot应用启动,SpringBoot提供启动类xxxApplication,类中只添加了@SpringBootApplication注解和调用了SpringApplication.run方法。
  3. @SpringBootApplication注解里又可以发现包含了3个其他注解,主要的3个分别是:
    @SpringBootConfiguration:继承了@Configuration注解,表示启动类也可以作为一个配置类使用
    @EnableAutoConfiguration:启动SpringBoot内置的自动配置功能
    @ComponentScan:扫描bean,扫描范围为当前应用启动类所在的包
  4. SpringApplication.run方法,往底层点,嵌套了几层run方法后,最终会调用getSpringFactoriesInstances方法,getSpringFactoriesInstances方法内部实现了对loadFactoryNames方法的调用,loadFactoryNames内部又调用了loadSpringFactories,loadSpringFactories内部又调用了classLoader.getResources(“META-INF/spring.factories”)
    调用一大堆,最终无非是扫描了所有依赖中的META-INF目录中spring.factories文件(starter依赖中通常都会存在这个文件)
    META-INF/spring.factories,SpringBoot内置的自动配置类路径,包含当前第三方环境的自动配置类路径
    spring.factories,spring-boot基础依赖包含这个文件、其他的第三方starter也包含这个文件
  5. 获取所有自动配置类的路径,当获取到所有自动配置类路径之后,就会依次扫描并加载这些自动配置,然后依次判断是否满足自动配置类的初始化条件,如果不满足则跳过,如果满足则进行初始化 

5.全局配置文件 

SpringBoot针对不同的开发场景提供默认的属性配置,如果默认的配置不能满足开发的需要,我们需要对属性配置进行修改

  • SpringBoot应用提供了一个全局配置文件application.properties用于进行自定义配置

  • 全局配置文件支持2中语法配置(*.properties /*.yaml):

    • properties 键值对配置

      # 配置数据源  (key必须按照SpringBoot的要求)
      spring.datasource.driver-class-name=com.mysql.jdbc.Driver
      spring.datasource.url=jdbc:mysql://localhost:3306/db_2010_mybatis?characterEncoding=utf-8
      spring.datasource.username=root
      spring.datasource.password=admin123
      
      # 配置映射文件路径及实体类的包名
      mybatis.mapper-locations=classpath:mappers/*Mapper.xml
      mybatis.type-aliases-package=com.qfedu.springboot.demo.entity
    • yaml 语法的配置

      spring:
        datasource:
          url: jdbc:mysql://localhost:3306/db_2010_mybatis?characterEncoding=utf-8
          driver-class-name: com.mysql.jdbc.Driver
          username: root
          password: admin123
      
      mybatis:
        mapper-locations: classpath:mappers/*Mapper.xml
        type-aliases-package: com.qfedu.springboot.demo.entity
      
      server:
        port: 9999
        servlet:
          context-path: /demo1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值