按照類型進行匹配spring
@Autowiredcode
按照ID進行匹配component
(spring中註解)@Autowired + @Qualifier("student") == (j2ee中註解)@Resource(name = "student")xml
* 一、啓動spring容器 * 二、把spring配置文件中的bean實例化(person,student) * 三、當spring容器解析配置文件 * <context:annotation-config></context:annotation-config> * spring容器會在歸入spring管理的bean的範圍內查找哪些類的屬性上是否加有@Resource註解 * 四、若是在屬性上找到@Resource註解 * 若是@Resource的註解的name屬性的值爲"" * 則把@Resource所在的屬性的名稱和spring容器中的id做匹配 * 若是匹配成功,則賦值(將bean中的建立類的對象賦值給@Resource所在的屬性,完成依賴注入) * 若是匹配不成功,則會按照類型進行匹配 * 若是匹配成功,則賦值,匹配不成功,報錯 * 若是@Resource的註解的name屬性的值不爲"" * 則解析@Resource註解name屬性的值,把值和spring容器中的ID進行匹配 * 若是匹配成功,則賦值 * 若是匹配不成功,則報錯 * * 說明: * 註解代碼愈來愈簡單,效率愈來愈低 * 註解只能應用於引用類型
<!-- component 把一個類放入到spring容器中,該類也稱爲component base-package 在指定的包及子包中掃描 --> <context:component-scan base-package="com.itheima11.spring.scan.annotation"></context:component-scan>
/** * @Component("ss") * == * <bean id="ss" class="..Student"> * * @Component * == * <bean id="student" class="..Student"> * */ @Component("student") public class Student { public void say(){ System.out.println("student"); } }
/** * 一、啓動spring容器 * 二、當spring容器解析到 * <context:component-scan base-package="com.itheima11.spring.scan.annotation"> </context:component-scan> 會去base-package指定的包及子包中掃描全部的類 三、看哪些類上面是否加有@Component註解 若是該類上面有@Component註解 檢查該註解的value屬性是否爲"" 若是爲"",則會把該註解所在的類的類名以這樣的方式 @Component public class Person{ } == <bean id="person" class="..Person"> 若是不爲"",則以這樣的形式: @Component("aa") public class Person{ } == <bean id="aa" class="..Person"> 四、掃描spring容器中全部的bean,進行@Resource規則 */
@Controller @Service @ Repository 與@Component用法同樣、對象
<bean id="student" class="..Person" parent="person"></bean>繼承