@configuration @Component @Repository @Controller

Posted 再等三分钟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@configuration @Component @Repository @Controller相关的知识,希望对你有一定的参考价值。

@configuration注解标注在类上,相当于把该类作为Spring的xml配置文件中的<beans>,使用注解来代替Spring中的bean配置

下面是@configuration定义:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration 

   /**
    * Explicitly specify the name of the Spring bean definition associated
    * with this Configuration class.  If left unspecified (the common case),
    * a bean name will be automatically generated.
    * <p>The custom name applies only if the Configuration class is picked up via
    * component scanning or supplied directly to a @link AnnotationConfigApplicationContext.
    * If the Configuration class is registered as a traditional XML bean definition,
    * the name/id of the bean element will take precedence.
    * @return the specified bean name, if any
    * @see org.springframework.beans.factory.support.DefaultBeanNameGenerator
    */
   String value() default "";

@Configuration可理解为用spring的时候xml里面的<beans>标签

@Bean可理解为用spring的时候xml里面的<bean>标签

从上面@configuration定义看,@configuration也是@Component的扩展,

@Component :定义Spring管理Bean

@Repository 是@Component扩展,通过注解在Dao层的类

@Service @Component扩展,通常注解在Service层实现的类。

@Controller:是@Component扩展,通常注解在表现层web层。

这些注解的的作用:

为了避免使用大量Xml配置的方式来注入Bean,Spring有自动扫描注入的方式,上面注解的类会自动被纳入Spring容器管理中,

通过<context:component-scan base-package=”com.mmnc”>    扫描组件





以上是关于@configuration @Component @Repository @Controller的主要内容,如果未能解决你的问题,请参考以下文章

@Configuration和@Component

@Configuration 和 @Component

为啥@Autowired 在@Configuration 内部没有@Component 工作

Spring Boot 2 - 在@Configuration 之前加载@Component

Spring Boot 希望 @Component 类成为 @Configuration 类中的 @Bean

一句话@Configuration和@Component的区别