Spring学习第三天

  • 按照类型进行匹配spring

    • @Autowiredcode

  • 按照ID进行匹配component

(spring中注解)@Autowired + @Qualifier("student") == (j2ee中注解)@Resource(name = "student")xml


注解DI流程

*  一、启动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用法同样、对象


spring容器中xml的继承(parent)

<bean id="student" class="..Person" parent="person"></bean>继承

注解继承则不须要任何改动

相关文章
相关标签/搜索