绑定Bean: 用于多个属性。
注解:@ConfigurationProperties
位置:1)在类的上面,需要有源代码
2) 方法的上面,使用第三方对象。配合@Bean注解数据来源 application文件 (properties, 或 yml)
@ConfigurationProperties
public class CollectionConfig {
private List<MyServer> servers;
private Map<String, User> users;
private String[] names;
@Override
public String toString() {
return "CollectionConfig{" +
"servers=" + servers +
", users=" + users +
", names=" + Arrays.toString(names) +
'}';
}
public List<MyServer> getServers() {
return servers;
}
public void setServers(List<MyServer> servers) {
this.servers = servers;
}
public Map<String, User> getUsers() {
return users;
}
public void setUsers(Map<String, User> users) {
this.users = users;
}
public String[] getNames() {
return names;
}
public void setNames(String[] names) {
this.names = names;
}
}
public class MyServer {
private String name;
private String ip;
}
public class User {
private String name;
private String sex;
private String age;
}
names:
- lisi
- zhangsan
servers:
- name: cqServer
ip: 1.1.2.1
- name: bjServer
ip: 2.1.4.1
users:
user1:
name: 张三
age: 12
sex: 男
user2:
name: 李四
age: 32
sex: 女
@Autowired
private CollectionConfig collectionConfig;
@Test
public void test07(){
System.out.println(collectionConfig);
}
结果CollectionConfig{servers=[MyServer{name=‘cqServer’, ip=‘1.1.2.1’}, MyServer{name=‘bjServer’, ip=‘2.1.4.1’}], users={user1=User{name=‘张三’, sex=‘男’, age=‘12’}, user2=User{name=‘李四’, sex=‘女’, age=‘32’}}, names=[lisi, zhangsan]}
指定数据来源@PropertySource(value =“xxx.properties")
注意:1)类中有无参数构造方法
2)属性有setxXX方法
3)static属性无效
4) 使用bean的构造方法也能创建对象,无需set方法
@PropertySource(value = "application.properties")
public class Lesson03PackageApplication {
@Bean
public Date myDate(){
return new Date();
}
public static void main(String[] args) {
SpringApplication.run(Lesson03PackageApplication.class, args);
}
}
@ConfigurationProperties使用需要配合其他注解:
- @Configuration
2)@EnableConfigurationProperties - @ConfigurationPropertiesScan
@SpringBootApplication
//符合注解:由
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
1.@SpringBootConfiguration
@SpringBootApplication
public class Lesson03PackageApplication {
@Bean
public Date myDate(){
return new Date();
}
public static void main(String[] args) {
SpringApplication.run(Lesson03PackageApplication.class, args);
}
}
//说明:使用了@SpringBootConfiguration注解标注的类,可以作为配置文件使用的,
//可以使用Bean声明对象,注入到容器
//包含@Configuration:JavaConfig的功能,结合@Bean能够将对象注入到spring的IOC容器
//2.@EnableAutoConfiguration
//启用自动配置,将spring和第三方库中的对象创建好 把java对象配置好,注入到spring容器中。避免些xml,去掉样例代码,例如可以把mybatis的对象创建好,放入到容器中
//3.@ComponentScan
//@ComponentScan <context:component-scan base-package="xxx包"/>
//扫描器,找到注解,根据注解的功能创建对象,给属性赋值等等。
//默认扫描的包: @ComponentScan所在的类所在的包和子包。
配置文件application 名称 和 位置都是可以改变的。application配置文件的位置:
1 项目的根目录下
2)项目根目录的/config目录
3) resources/config