天天看點

java中注解component_Spring注解之@Component詳細解析

@controller 控制器(注入服務)

2、@service 服務(注入dao)

3、@repository dao(實作dao通路)

4、@component (把普通pojo執行個體化到spring容器中,相當于配置檔案中的)

@Component,@Service,@Controller,@Repository注解的類,并把這些類納入進spring容器中管理

下面寫這個是引入component的掃描元件

1、@Service用于标注業務層元件

2、@Controller用于标注控制層元件(如struts中的action)

3、@Repository用于标注資料通路元件,即DAO元件.

4、@Component泛指元件,當元件不好歸類的時候,我們可以使用這個注解進行标注

@Component是一個元注解,意思是可以注解其他類注解,如@Controller @Service @Repository @Aspect。官方的原話是:帶此注解的類看為元件,當使用基于注解的配置和類路徑掃描的時候,這些類就會被執行個體化。其他類級别的注解也可以被認定為是一種特殊類型的元件,比如@Repository @Aspect。是以,@Component可以注解其他類注解。

源代碼:

@Target({java.lang.annotation.ElementType.TYPE})

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface Component {

//這個值可能作為邏輯元件(即類)的名稱,在自動掃描的時候轉化為spring bean,即相當中的id

public abstract String value();

}

案例:

a.不指定bean的名稱,預設為類名首字母小寫university

@Component

public class University {

to do sthing...

}

擷取bean方式:

ApplicationContext ctx  = new ClassPathXmlApplicationContext("./config/applicationContext.xml");

University ust = (University) ctx.getBean("university");

b.指定bean的名稱

@Component("university1")

public class University {

to do sthing...

}

擷取bean方式:

ApplicationContext ctx  = new ClassPathXmlApplicationContext("./config/applicationContext.xml");

University ust = (University) ctx.getBean("university1");