@ConfigurationProperties和@Value不同的使用场景,@Bean添加组件 (6.spring boot配置文件注入)

接上文

注释掉@ConfigurationProperties使用@Value注解

    /**
     * <bean class="Person">
     *     <property name="lastName" value="字面量/${key}从环境变量、配置文件中获取值/#{spel}"></property>
     * <bean/>
     */
//Spring底层注解
    @Value("${person.last-name}")
    private String lastName;

    @Value("#{11*2}")
    private Integer age;

  

测试可以获取到

  1.                               @configurationpropertis                        @Value
  2.  功能:                  批量注入                                                  一个个指定
  3. 松散绑定:            支持。last-name等价于lastName           不支持
  4. SPEL                     不支持                                                    支持
  5. JSR303数据校验    支持。校验在属性中@Email                 不支持
  6. 复杂类型封装         支持                                                       不支持 ${person.dogs}报错

如果只是在某个业务需要获取一下配置文件中的某个值,使用@Value

 如果专门编写一个javaBean和配置文件进行映射,就直接用@configurationProperties批量注入

@PropertySource 和 @ImportResource

@PropertySource:加载指定的配置文件

测试通过

 @ImportResource

拿到ioc容器

自己编写的配置文件不能生效自动识别

@ImportResource(locations = {"classpath:beans.xml"})导入spring的配置文件让其生效
加到测试类上,测试就可以找到了

 


 SpringBoot推荐给容器添加组件的方式: 全注解的方式

1.配置类

service下有一个服务类

 新建config目录,创建一个配置类

下图 启动测试类,上图可见成功了

 

如果改成下图就会查找失败

springboot推荐注解方式@Bean给容器中添加组件

package com.tabctrlshift.springboot.config;

import com.tabctrlshift.springboot.service.HelloService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

//指明sb当前类这是一个配置类
//以前用<bean>标签
@Configuration
public class MyAppConfig {

//    将方法的返回值添加到容器中,容器中这个组件默认id就是方法名
    @Bean
    public HelloService helloService08(){
        System.out.println("配置类@Bean给容器中添加组件了");
        return new HelloService();
    }
}

  





配置文件占位符

可以用:指定默认值

原文地址:https://www.cnblogs.com/tabCtrlShift/p/9074600.html