@Configuration和@Component的区别

这俩干嘛的????

@Component和@Configuration 都可与用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。


直接开始总结:

@Configuration注解类下的所有带着@Bean的方法都会被动态代理,因此调用该方法返回的都是同一个实例。

@Component类中的@Bean注解得方法被调用返回的是一个新的实例。

区别@Bean注解得方法被调用返回的新的(旧的)实例。@Configuration 旧的 @Component新的

@Configuration注解得类必须符合以下的要求:

  • 配置类必须以类的形式提供(不能是工厂方法返回的实例),允许通过生成子类在运行时增强(cglib 动态代理)。

  • 配置类不能是final 类(没法动态代理)。

  • 配置注解通常为了通过 @Bean注解生成 Spring 容器管理的类,

  • 配置类必须是非本地的(即不能在方法中声明,不能是 private)。

  • 任何嵌套配置类都必须声明为static。


你可能感兴趣的:(spring)