底层注解
@Configuration
自定义配置类
@Bean:
可以通过@Bean注解将方法的返回值交给ioc容器来管理
组件id为方法名,组件的类型就是方法的返回类型。
默认组件是单例的
@Configuration:
告诉springboot这是一个配置类==之前的配置文件
配置类本身也是组件,由springioc管理
@Configuration(proxyBeanMethods = true)
表示代理对象调用方法,springboot会检查这个配置类中的组件是否在容器中,来保持组件单例
@Import
向ioc容器中添加组件,默认名字就是全类名
启动类中测试代码:
@SpringBootApplication
public class SpringbootLearn01Application {
public static void main(String[] args) {
//获取IOC容器
ConfigurableApplicationContext run = SpringApplication.run(SpringbootLearn01Application.class, args);
String[] beanNamesForType = run.getBeanNamesForType(User.class);
for(String e:beanNamesForType)
{
System.out.println(e);
}
}
}
第一个就是@import添加的组件,第二个是通过@Bean向ioc中添加的组件
Conditional
条件装配:满足Conditional指定的条件,则进行组件注入
@ImportResource
导入spring配置文件,使其生效
@ImportResource("applicationContext.xml")
配置绑定@ConfigurationProperties
使用@ConfigurationProperties(prefix = “xxx”)来进行配置绑定的时候要确保bean在容器中,可以通过在实体类上添加@Component或者在配置文件中@EnableConfigurationProperties(类.class)
yml中:
第一种@Component+ConfigurationProperties(prefix = “Car”)
Car类:
package com.mao.exercise.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@ConfigurationProperties(prefix = "car")
public class Car {
private String id;
private String name;
private double price;
}
测试:
第二种@EnableConfigurationProperties(Car.class)+ConfigurationProperties(prefix = “Car”)
Car类
配置文件: