StringBoot的配置以及注入属性的方式

我的SpringBoot第二天

SpringBoot配置以及注入方式等



一、SpringBoot配置文件:yml和properties两种

1…全局的配置文件 application.yml

注意:yml中的基本语法(k:(空格)v:表示一对键值对(空格必须有);
以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
属性和值也是大小写敏感;)例如:
server:
port: 8081
path: /hello

值得写法:
1.1:对象
(行内写法)person: {name: Sunny,age: 12}
person:
name: Sunny
age: 12

1.2:数组(List Set)
(行内写法)
user
- name
- age
- sex
2… 全局的配置文件 application.properties
通过对象名.属性名=属性值例如:
student.name=张三
二、springboot中如何注入属性的以及具体实现

  1. 编写一个pojo类,用来绑定配置文件里面定义的属性值List item
  2. 在application.yml里面定义属性(属性的名称必须要和pojo类里面的属性保持一致)
  3. 进行绑定的操作 使用@ConfigurationProperties(prefix=“person”)

代码如下:

  1. 首先创建一个实体类Person和Dog(提供get,set方法以及toString)
    注意:在Person加上注解
    @Component
    @ConfigurationProperties(prefix = “person”)
@Component
@ConfigurationProperties(prefix = "person")//prefix配置文件中的哪个属性进行一一映射,springboot 将当前类的所有属性和配置文件中的相关信息进行绑定
public class Person {
    private String lastName;
    private Integer age;
    private Boolean boss;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> lists;


public class Dog {
    private String name;
    private Integer age;
2.在application.yml中注入属性(注意:严格按照yml语法以及值的写法)
person:
 lastName: wangyao
 age: 19
 boss: true
 birth: 2000/06/10
 maps: {k1: v1,k2: v2}
 lists:
   - lsia
   - lbl
 dog:
   name: 大黄
   age: 3
3.最终在controller中进行测试
@Autowired//自动装配
   Person person;
   @RequestMapping("person")
   public Person testPerson(){
       System.out.println(person);
       return person;

   }

三、SpringBoot通过注解的方式注入

  1. 首先是@value对应字面量注解方式

    @value主要是加在实体类中属性名上(例如)
    @value(“lisa”)
    private String name;
    (其中name是属性,lisa是属性值)
    然后在yml配置文件中定义
    还有就是通过对象名来调用
    @value("${对象名.属性名}")
    private String name;

  2. @email定义的email属性不支持@value
    在yml文件中 email的值只能是邮箱类型,否则启动报错

  3. @PropertySource
    通过引入局部的properties配置文件来实现

@Component
@PropertySource("classpath:student.properties")//引入student.properties
@ConfigurationProperties(prefix = "student")
public class Student {
  private String name;
  private Integer age;
  private Integer score;
  private String gender;

在这里插入图片描述

  1. @ImportResource 导入xml配置文件

    主要是导入bean.xml来管理bean
    首先定义管理类UserService
    然后配置bean.xml
    在启动类上添加@importResource注解
    最终测试

public class UserService {
   public void test(){
       System.out.println("这是UserService里面的方法");
   }
}
<bean id="userService" class="com.oracle.service.UserService"></bean>
@SpringBootApplication
@ImportResource(locations = {"classpath:bean.xml"})//加载类路径下面的配置文件
public class App {
   public static void main(String[] args) {
       SpringApplication.run(App.class,args);
   }
}
@Autowired
  ApplicationContext applicationContext;//注入实现
 
  public String hello(){
      UserService userService = (UserService) applicationContext.getBean("userService");
      userService.test();

总结:

	第一点:需注意的是两种springboot配置文件yml和properties注入属性时		
主要是二者书写时的区别:properties没什么注意的就是对象名.属性名等于一个属性值
其次是yml书写格式以及分级一定要注意冒号与属性值之间的空格等等,格式包括(数组和对象书写格式需注意)
	第二点:那么在JavaBean注入到配置文件中的时候,需注意所提供的的实体类上加上的注解
@Component和@ConfigurationProperties(prefix = "对象名")
	第三点:使用@value注解时,可以使用@value("属性名"),@value("${对象名.属性名}"),
@value("#{10+10}")支持自动计算
	第四点:使用@email注解时,不支持@value最为属性名上,在yml使用email时的属性值必须为邮箱格式,
否则就会报错
	第五点:@PropertySource 和@ImportResource
@PropertySource是引入局部的properties配置文件
@ImportResource是导入xml配置文件
使用@ConfigurationProperties注解可以获取配置文件中的属性值。但是@ConfigurationProperties
读取的配置文件是全局的,也就是说这个注解只能加载全局的配置文件(application.yml/application.properties).
所有我们选择使用PropertySource
Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;
想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上				
	第六点:在spring中如何管理bean?(知识拓展)
        1.无参数的构造函数
        2.静态实例化工厂
        3.实例化工厂
        4.注解  @Controller @Service ....
        5.Java配置类的方式管理bean(springboot中常用的做法)
           5.1 定义一个bean
           5.2 定义一个配置类(@Configuration修饰一个类)
           5.3 在类里面定义一个方法(专门用来管理bean的)
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值