




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第SpringBoot自定义bean绑定实现目录自定义bean绑定导入第三方bean第三方bea通过配置文件注参数出现Prefixmustbeincanonicalform@EnableConfigurationProperties()和@ConfigurationProperties的区别解除@ConfigurationProperties注解警告@ConfigurationProperties的松散绑定
自定义bean绑定
在配置文件中写入
servers:
ipAddress:
port:1234
detail:zhangsan
定义一个实体类对象去接受这些属性
importlombok.Data;
importperties.ConfigurationProperties;
importorg.springframework.stereotype.Component;
@Data//lombok省去get/set/toString
@Component//交给spring容器管理
@ConfigurationProperties(prefix="servers")//配置文件的位置,对应的属性注入
publicclassServerConfig{
privateStringipAddress;
privateintport;
privateStringdetail;
}
启动类下的
importcom.pojo.ServerConfig;
importorg.springframework.boot.SpringApplication;
importorg.springframework.boot.autoconfigure.SpringBootApplication;
importorg.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
publicclassSpringboot11ConfigurationApplication{
publicstaticvoidmain(String[]args){
ConfigurableApplicationContextrun=SpringApplication.run(Springboot11ConfigurationApplication.class,args);
ServerConfigbean=run.getBean(ServerConfig.class);
System.out.println(bean);
}
导入第三方bean
注入方式有许多,可以导入在写一个配置类,然后加上@Bean即可,启动类中的@SpringBootApplication本身就是一个配置类。所以直接在这写也可以。
导入druid坐标
dependency
groupIdcom.alibaba/groupId
artifactIddruid/artifactId
version1.2.12/version
/dependency
启动类
@SpringBootApplication
publicclassSpringboot11ConfigurationApplication{
@Bean//注入
publicDruidDataSourcedruidDataSource(){
DruidDataSourceds=newDruidDataSource();
returnds;
publicstaticvoidmain(String[]args){
ConfigurableApplicationContextrun=SpringApplication.run(Springboot11ConfigurationApplication.class,args);
ServerConfigbean=run.getBean(ServerConfig.class);
System.out.println(bean);
DruidDataSourcedds=run.getBean(DruidDataSource.class);
System.out.println(dds);
}
运行出来什么也没
第三方bea通过配置文件注参数
application.yml下
datasource:
driverClassName:com.mysql.jdbc.driver.zhkc
username:张三
password:kczh
启动类下
packagecom;
importcom.alibaba.druid.pool.DruidDataSource;
importcom.pojo.ServerConfig;
importorg.springframework.boot.SpringApplication;
importorg.springframework.boot.autoconfigure.SpringBootApplication;
importperties.ConfigurationProperties;
importorg.springframework.context.ConfigurableApplicationContext;
importorg.springframework.context.annotation.Bean;
@SpringBootApplication
publicclassSpringboot11ConfigurationApplication{
@Bean
@ConfigurationProperties(prefix="datasource")
publicDruidDataSourcedruidDataSource(){
DruidDataSourceds=newDruidDataSource();
returnds;
publicstaticvoidmain(String[]args){
ConfigurableApplicationContextrun=SpringApplication.run(Springboot11ConfigurationApplication.class,args);
//ServerConfigbean=run.getBean(ServerConfig.class);
//System.out.println(bean);
DruidDataSourcedds=run.getBean(DruidDataSource.class);
System.out.println(dds.getDriverClassName());
System.out.println(dds.getUsername());
System.out.println(dds.getPassword());
}
运行结果
出现Prefixmustbeincanonicalform
这是因为prefix属性只能用小写,不能使用驼峰命名法,改成小写即可
@EnableConfigurationProperties()和@ConfigurationProperties的区别
@EnableConfigurationProperties开启对应的属性功能,可以通过配置中的属性,让我们对应的类名来做属性注入,这样也可以看出有哪些类通过spring去管理
@ConfigurationProperties是做具体的属性绑定的,对应的配置文件。
当我们使用了@EnableConfigurationProperties,且又在类总使用了@Component,就会报错,如下
这个错误是,找到两个bean,一个类对应着两个bean导致不唯一了。
原因是:@EnableConfigurationProperties(ServerConfig.class),默认会交给spring容器去管理,而要想让spring去管理,首先得是一个bean对象,所就会把这个ServerConfig.class变成bean对象。我们在那个类中写了@Component,这个注解也是说这个是一个bean对象,这样就导致了同一个类中对应了两个bean对象,所以产生错误。这两个注解不能同时使用,一般使用@EnableConfigurationProperties更能体现出是哪个类受spring管且需要配置注入。
解除@ConfigurationProperties注解警告
原因:springboot配置的处理器并没有配置,现在不能识别这个注解
解决:那就给它加上
pom.xml加上:
dependency
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-configuration-processor/artifactId
/dependency
这样警告就没有了。
@ConfigurationProperties可以为第三方的bean绑定属性。
@ConfigurationProperties的松散绑定
也叫宽松绑定,指的是在配置文件中的参数名任意大小写下划线或者中线,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论