SpringBoot 入门篇>>>01

1. SpringBoot 你听我说

优点

  • 快速创建独立的运行的Spring项目以及与主流框架的集成
  • 使用servlet容器,应用不需要打包成war
  • starter自动依赖与版本控制
  • 大量的自动配置 简化开发
  • j2ee开发的一站式框架

springboot入门

  • SpringBoot的主要目录
com
  +- example
    +- myproject
      +- Application.java  //由里面的main方法 来启动springboot
      |
      +- domain  //主要写实体类entity 和数据访问层Resposity
      |  +- Customer.java
      |  +- CustomerRepository.java
      |
      +- service   //业务代码
      |  +- CustomerService.java
      |
      +- controller  //负责页面的访问控制
      |  +- CustomerController.java
  • pom.xml文件
    spring-boot-starter :核心模块 包括配置支持 日志 YAML
    spring-boot-test:测试模块 包括JUNIT Hamcrest Mickito
  • 父项目:spring-boot-starter-parent:父项目真正管理Springboot的里面的所有依赖;Spring boot版本仲裁中心 所以默认不需要写version版本号
 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
    </parent>
  • spring-boot-starter-web:依赖 不需要写版本号
<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
</dependency>
  • spring-boot-starter:场景启用器,帮导入了web应用依赖 (springboot将所有的场景抽取出来,做成一个个的starts(启动器)只需要在项目中导入相关场景的依赖都会导入进来。)

2. SpringBoot的配置

  • 在src路径下的 application.properties 和application.yml都会当成全局配置文件,名字名固定。可以修改Springboot的默认值
  • YAML:以数据为中心,比json,xml更适合做配置文件

3. yml配置学习

server:
  port: 8080

3.1 yml的基本语法

  • key: v:key 与value之间有空格
  • 有空格的缩进来控制层级关系(只要是左对齐的一列数据都是同一层级的)(属性与值是大小写敏感的)
server:
  port: 8081
  address: localhost

3.2 yml的值的写法

  • 字面值(普通的值 数字 字符串 布尔)
k: v

字面量直接写,字符串默认不加"" (不会转义字符串里面的字符,那么特殊字符会直接表示它的字符意思 abc\nd–>abc换行d)''(会把特殊字符转成普通的字符串abc\n–>abc\nd)

  • 对象 map(属性 值)
person:
		lastname: zhangshan
		age: 20
person: {lastname: zhangshan,age: 18}
  • 数组(list set)用- 值表示一个元素的值
personList: 
- zhangshan
- lisi
- wangwu
personlist: [zhangshan,lisi,wangwu]

3.3 获取yml配置文件的值

  1. yml
server:
  port: 8081
  address: localhost
person:
  name: zhangshan
  age: 22
  boss: true
  bitrh: 2017/28/45
  maps: {k1: v1,k2: v2,k3: v3}
  list:
  - lixi
  - wangwu
  - zhangliu
  dog:
    name: xiaotian
    age: 3

  1. 在类上加入注解
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;
    private Integer age;
    private Boolean boss;
    private Date bitrh;

    private Map<String ,Object>maps;
    private List<Object>list;
    private Dog dog;
  1. 在测试中利用test自带的测试
    在这里插入图片描述

4. @value@ConfigurationProperties的区别

@Configuration@value
功能批量注入配置文件中的属性一个一个写
松散语法支持 FileName==File-Name不支持
SPEL表达式语言不支持支持 ,表达式 ${} #{}
JSR303数据校验 @Validated支持不支持
复杂类型支持不支持 只能简单数据类型
  • 如果,只是在某个业务逻辑中需要获取配置文件的某项值,使用@Value
  • 如果在bean中进行映射 使用 @Configuration

5.@PropertiesSource与@ImportResource 区别

  • @PropertiesSource默认指定某个配置文件 ,如果不写默认从全局文件中获取值
//告诉SpringBoot 加载某个配置文件
@PropertySource(value = "classpath:person.properties")
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;
  • @ImportResource:导入spring的配置文件 让配置文件内容生效 才可以导入容器的配置文件(Springboot里面没有Spring的配置文件,自己编写的配置文件,不能自动识别。因此想要Spring配置文件生效,必须要加载进来,把它@ImportResource标注在一个配置类上面)
    在这里插入图片描述
    编写Spring的配置文件
    在这里插入图片描述
    另:SpringBoot推荐给容器中添加组件的方式 推荐使用全注解:
  1. 配置类===配置文件类.xml
  2. 使用@Bean的方式添加组件
//称为配置类 需要加上@Configuration指明当前类是一个配置类,相当于Spring的配置文件
@Configuration
public class Myconfig {
    @Bean//将方法到的返回值添加到容器中,容器中组件默认的id为该方法的名字
    public HelloService helloService(){
        System.out.println("配置文件类@Bean给容器添加组件");
        return new HelloService();
    }
}

5. 配置文件占位符 ${}来占位位置

5.1 随机数

random.value {random.int} random.int(10) {random.int[1024,65536]}

5.2 占位符号获取之前的配置的值 如果没有 可以使用:指定默认的值

在这里插入图片描述

6. Profile

  • profile是Spring对不同环境提供不同的配置功能的支持,可以激活指定参数等快速切换环境

6.1 多profile文件

  • 当我们在主配置文件编写时,可以把文件配置名改成application-{profile}.properties/yml来进行动态的切换
  • 默认使用application.properties配置文件

6.2 yml支持多文档块格式

  • 可以通过active来指定配置文档块启动的方式
server:
  port: 8081
spring:
  profiles:
    active: dev
---
server:
  port: 8082
spring:
profiles: dev
---
server:
  port: 8083
spring:
  profiles: prod #指定属于哪个环境

6.3 激活指定profile

  • 在配置文件中 指定·要激活得配置文件spring.profiles.active=dev
    在这里插入图片描述
  • 命令行方式激活(在运行来是指定的配置文件)--spring.profiles.active=...
    在这里插入图片描述

7. 配置文件加载位置

在这里插入图片描述

  • SpringBoot在启动时 会把application.properties application.yml作为默认
  • springboot会从高优先级的配置一直向低优先级的配置文件全部加载 高优先会覆盖第优先级的配置文件。也会互补配置
  • 可以通过spring.config.location来改变默认的配置文件的位置(或者在硬盘上面)(当项目打包时,可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置,指定文件与默认加载的配置文件也可以互补配置)

8. SpringBoot的外部配置文件的加载顺序

  • springboot亦可以从以下位置加载配置
  • 优先加载带profile的在来加载不带profile的配置文件(由jar包外向jar包内加载)
    -
    在这里插入图片描述

9. 自动配置原理

1) SpringBoot启动的时候,加载主配置类,并且开启了自动配置@EnableAutoConfiguration
2) @EnableAutoConfiguration作用:

  • 利用AutoConfigurationImportSelector给容器中导入了一些组件
  • 可以查看selectImports()的内容
 AutoConfigurationMetadata autoConfigurationMetadata = AutoConfigurationMetadataLoader.loadMetadata(this.beanClassLoader);
            AutoConfigurationImportSelector.AutoConfigurationEntry autoConfigurationEntry = this.getAutoConfigurationEntry(autoConfigurationMetadata, annotationMetadata);
            return StringUtils.toStringArray(autoConfigurationEntry.getConfigurations());

  • 获取候选的配置
    在这里插入图片描述
    -每一个这样的xxxAutoConfifuration类都是容器的一个组件,都加入到容器中,用他们来做自动配置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值