三方集成自动配置

1. SpringBoot中配置文件的优先级?

  优先级由低到高为:

  • application.yaml
  • application.yml
  • application.properties

2. SpringBoot中配置端口有哪些方式,优先级是怎样的?

       优先级由低到高为:

  • application.yaml
  • application.yml
  • application.properties
  • Java系统属性(-Dxxxx=xxxx)
  • 命令行参数(--xxxx=xxxx)

上述顺序,是加载顺序,如果属性名相同,后加载的会覆盖先加载的。


3. 能够说出bean的两种常见的作用域及如何设置作用域?

singleton

容器内同 id 的 bean 只有一个实例(单例)(默认)

prototype

每次使用该  bean 时会创建新的实例(非单例)

@Scope("prototype")
@RestController
@RequestMapping("/depts")
public class DeptController {
	//....
}

注意事项:

  • 默认singleton的bean,在容器启动时被创建。
  • prototype的bean,每一次使用该bean的时候,都会创建一个新的实例

4. 怎么使用@Bean注解来管理第三方bean

@SpringBootApplication
public class SpringbootThirdbeanApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootThirdbeanApplication.class, args);
    }
    
    @Bean
    public BASE64Decoder base64Decoder(){
        return new BASE64Decoder();
    }
}

如果要管理的第三方 bean 比较多,建议对这些bean进行集中分类配置,可以通过 @Configuration 注解声明一个配置类。


5. @Conditional注解和@Import注解的作用是什么?

@Conditional注解:按照一定的条件进行判断,需要声明的Bean,在满足给定条件后才会注册到Spring IOC容器中。

子注解:

  • @ConditionalOnClass:判断环境中是否有对应字节码文件,才注册bean到IOC容器。
  • @ConditionalOnMissingBean:判断环境中没有对应的bean ,才注册bean到IOC容器。
  • @ConditionalOnProperty:判断配置文件中是否有对应属性和值,才注册bean到IOC容器。

@Import注解:用于导入一些Bean 和 配置类到IOC容器中。

导入形式:

Bean:在启动类上@Import(类名.class)

配置类:在启动类上@Import(配置类名.class)

@Import({TokenParser.class, HeaderConfig.class})
@SpringBootApplication
public class SpringbootThirdbeanApplication {}

ImportSelector接口子类:定义一个ImportSelector的实现类,在selectImports中写入要注入的类名

public class MyImportSelector implements ImportSelector {
    public String[] selectImports(AnnotationMetadata importingClassMetadata) {
        return new String[]{"com.example.HeaderConfig","com.example.TokenParser"};
    }
}

之后再启动类上进行@Import注解引入:@Import(实现类名.class)


6. 简要的说出springboot自动配置的原理?

@SpringBootApplication

该注解由三个部分组成:
 @SpringBootConfiguration:该注解与 @Configuration 注解作用相同,用来声明当前也是一个配置类。  
@ComponentScan:组件扫描,默认扫描当前引导类所在包及其子包。  
@EnableAutoConfiguration:SpringBoot实现自动化配置的核心注解。

@EnableAutoConfiguration中有@Import注解

@Import({AutoConfigurationImportSelector.class})
 

AutoConfigurationImportSelector是ImportSelector的实现类,方法selectImports中方法嵌套中包含了spring.factories这个配置文件,spring.factories里是springboot所需要的Bean.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值