Spring Boot基础系列(2)

  @Configuration注解的底层就是@Component,但是二者意义不同,@Configuration注解侧重配置之意,@Component侧重组件之意,当然配置也是项目组件之一,在这里我们要将配置文件属性与JavaBean绑定,当然更侧重配置之意。

  将配置与JavaBean绑定之后,我们就可以通过JavaBean来获取配置的内容,而且JavaBean已经被@Component注解或者@Configuration注解加载到Spring容器,我们可以使用自动注入的方式在其他类中随便使用。

  这里要注意一点:当我们在某个类中要使用这个JavaBean时,需要在这个类中指定这个JavaBean的类型,这个指定也要使用注解来制定,正是之前介绍的@EnableConfigurationProperties注解,这个注解与@ConfigurationProperties注解配套使用。官方给出的解释:这个注解是对@ConfigurationProperties的有效支持。标注有@ConfigurationProperties注解的Beans可以被使用标准的方式注册(使用@Bean注解),或者,为了方便起见,直接用使用@EnableConfigurationProperties指定注册。意思是这个注解提供了一种方便直接的注册Bean的方式。

3-绑定JavaBean:Donghao.java

package com.donghao.model;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

@Configuration
@PropertySource("classpath:donghao.properties")
@ConfigurationProperties(prefix="donghao1")
public class Donghao {
    private String name;
    private String sex;
    private String age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
}

4-定义控制器:DonghaoController

package com.donghao.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.donghao.model.Donghao;

@RestController
@RequestMapping("/donghao")
@EnableConfigurationProperties(Donghao.class)
public class DonghaoController {
   
    @Autowired
    Donghao donghao;
   
    @Value("${donghao.name}")
    private String name;
   
    @Value("${donghao.sex}")
    private String sex;
   
    @Value("${donghao.age}")
    private String age;


    @RequestMapping("/hello")
    public String hello(){
        return "我的名字叫"+name+",我是"+sex+"生,今年"+age+"岁了!";
    }
   
    @RequestMapping("/ss")
    public String ss(){
        return donghao.getName()+donghao.getSex()+donghao.getAge();
    }
}

5-定义启动入口类:DonghaoApplication.java

package com.donghao;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DonghaoApplication {

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

}

  启动程序之后,浏览器访问::8080/donghao/hello,结果为:

Spring Boot基础系列

  浏览器访问::8080/donghao/ss

Spring Boot基础系列

  我这里要重点强调一点,加载和使用并不相关联,虽然加载的目的是为了使用,但是加载和使用之间并不是强关联的,我们完全可以加载但不实用,所以我们应该将加载的过程与使用的过程分开来分析,他们对应于不同的注解,这些注解之间并不是强关联的,他们各有各的用途,各有作用,如果只是加载自定义配置文件,只要一个@PropertySource注解就完事,使用方面的注解不用去管,当需要使用的使用,我们完全可以选择多种使用的方式,直接使用的话我们就使用@Value注解进行直接赋值,这个注解就可以直接将被加载到Spring容器中的属性配置的值赋值到指定的字段,当然也可以使用绑定JavaBean的方式。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/74cf7ae1e8600b542925ffaddff142f6.html