4.1、什麼是基於註解的容器配置
不使用 XML 來描述 bean 裝配,開發人員通過在相關的類,方法或字段聲明上 使用註解將配置移動到組件類本身。它可以作爲 XML 設置的替代方案。例如:
Spring 的 Java 配置是通過使用 @Bean 和 @Configuration 來實現。
@Bean 註解扮演與 元素相同的角色。 @Configuration 類允許通過簡單地調 用同一個類中的其他 @Bean 方法來定義 bean 間依賴關係。
@Configuration
public class StudentConfig {
@Beanpublic
StudentBean myStudent() {
return new StudentBean();
}
}
4.2、如何在 spring 中啓動註解裝配?
默認情況下,Spring 容器中未打開註解裝配。因此,要使用基於註解裝配,我們 必須通過配置 <context:annotation-config/> 元素在 Spring 配置文件 中啓用它。
4.3、@Component, @Controller, @Repository, @Service 有何區別?
@Component :這將 java 類標記爲 bean。它是任何 Spring 管理組件的通 用構造型。spring 的組件掃描機制現在可以將其拾取並將其拉入應用程序環境 中。@Controller :這將一個類標記爲 Spring Web MVC 控制器。標有它的 Bean 會自動導入到 IoC 容器中。@Service :此註解是組件註解的特化。它不 會對 @Component 註解提供任何其他行爲。您可以在服務層類中使用 @Service 而不是 @Component,因爲它以更好的方式指定了意圖。 @Repository :這個註解是具有類似用途和功能的 @Component 註解的特 化。它爲 DAO 提供了額外的好處。它將 DAO 導入 IoC 容器,並使未經檢查 的異常有資格轉換爲 Spring DataAccessException。
4.4、@Required 註解有什麼用?
@Required 應用於 bean 屬性 setter 方法。此註解僅指示必須在配置時使用 bean 定義中的顯式屬性值或使用自動裝配填充受影響的 bean 屬性。如果尚未 填充受影響的 bean 屬性,則容器將拋出 BeanInitializationException。
示例:
public class Employee {
private String name;
@Required
public void setName(String name){
this.name=name;
}
public string getName(){
return name;
}
}
4.5、@Autowired 註解有什麼用?
@Autowired 可以更準確地控制應該在何處以及如何進行自動裝配。此註解用於 在 setter 方法,構造函數,具有任意名稱或多個參數的屬性或方法上自動裝配 bean。默認情況下,它是類型驅動的注入。
public class Employee {
private String name;
@Autowired
public void setName(String name) {
this.name=name;
}
public string getName(){
return name;
}
}
4.6、@Qualifier 註解有什麼用?
當您創建多個相同類型的 bean 並希望僅使用屬性裝配其中一個 bean 時,您可 以使用@Qualifier 註解和 @Autowired 通過指定應該裝配哪個確切的 bean 來消除歧義。
例如,這裏我們分別有兩個類,Employee 和 EmpAccount。在 EmpAccount 中,使用@Qualifier 指定了必須裝配 id 爲 emp1 的 bean。
Employee.java
public class Employee {
private String name;
@Autowired
public void setName(String name) { this.name=name; }
public string getName() { return name; }
}
EmpAccount.java4.7、@RequestMapping 註解有什麼用?
@RequestMapping 註解用於將特定 HTTP 請求方法映射到將處理相應請求的
控制器中的特定類/方法。此註釋可應用於兩個級別: 類級別:映射請求的 URL 方法級別:映射 URL 以及 HTTP 請求方法