按照类型进行匹配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>继承