SpringBoot 中的@Configuration和@Bean

196 阅读1分钟

注解@Configuration

@Configuration注解和@Controller,@Service一样是对@Component注解的扩展,所以它注解的类也可以被Spring作为Bean管理起来

  • @Configration注解:声明当前类是一个配置类,相当于 Spring 中的一个 XML 文件
  • @Bean 注解:作用在方法上,声明当前方法的返回值是一个 Bean

下面是一个简单的示例:

@Data
@Configuration
@ConfigurationProperties(prefix = "demo")
public class Config {
    
    private String name;
​
    private int age;
​
    @Bean
    public AppConfig initAppConfig(){
        AppConfig a = new AppConfig();
        a.setAge(age);
        a.setName(name);
        return a;
    }
}

上面的Configuration也可以为Component;上面的AppConfig就是一个Bean可以被其他的组件进行装配,比如:

@Controller
public class DemoController {
    
    @Autowired
    private AppConfig appconfig;
​
    @Autowired
    private ValueConfig vc;
​
    @Autowired
    private Config c;
​
    @ResponseBody
    @GetMapping(value = "/appinfo")
    public String appInfo(){
        return appconfig.toString();
    }
}