Spring_IOC_注解

1. 使用注解标识组件

  1. @Component: 标识一个受SpringIOC容器管理的组件
  2. @Respository: 持久化层组件
  3. @Service: 业务逻辑层组件
  4. @Controller: 表述层控制器组件

2. 组件命名规则

  1. 默认情况下: 使用组件的简单类名首字母小写后得到的字符串作为bean的id
  2. 使用组件注解的value属性指定bean的id

3. 开启注解扫描

组件上被注解标识之后还需要开启注解扫描

application.xml中指定被扫描的package

  1. base-package属性指定一个需要扫描的基类包,Spring容器将会扫描这个基类包及其子包中的所有类
  2. 当需要扫描多个包时可以使用逗号分隔。
  3. 如果仅希望扫描特定的类而非基包下的所有类,可使用resource-pattern属性过滤特定的类,示例:
<context:component-scan base-package="com.lz.component"/>
<context:component-scan base-package="com.lz.component" resource-pattern="autowire/*.class"/>

包含与排除

  1. <context:include-filter>子节点表示要包含的目标类
  2. <context:exclude-filter>子节点表示要排除在外的目标类

4. 组件装配

使用@Autowired注解

  1. 先根据类型实现自动装配。
  2. 构造器、普通字段(即使是非public)、一切具有参数的方法都可以应用@Autowired注解
  3. 认情况下,所有使用@Autowired注解的属性都需要被设置。当Spring找不到匹配的bean装配属性时,会抛出异常。
  4. 若某一属性允许不被设置,可以设置@Autowired注解的required属性为 false
  5. 默认情况下,当IOC容器里存在多个类型兼容的bean时,Spring会尝试匹配bean的id值是否与变量名相同,如果相同则进行装配。如果bean的id值不相同,通过类型的自动装配将无法工作。此时可以在@Qualifier注解里提供bean的名称。Spring甚至允许在方法的形参上标注@Qualifiter注解以指定注入bean的名称。
  6. 可以使用@Qualifier来具体指定要装配的bean的id值.

5. IOC总结

  1. IOC是一个容器, 帮助我们管理所有的组件
  2. 某个组件要使用spring提供的IOC或AOP,必须先加入到容器中(注册会员)
  3. 容器启动, 创建所有单例对象bean
  4. autowire的自动装配时, 是从容器中找这些符合要求的bean
  5. ioc.getBean(“bookService”),也是从容器中找这个bean
  6. 容器中包括了所有的bean
  7. spring容器其实就是一个map
  8. 这个map中保存了所有创建好的bean,并提供外界获取功能
发布了43 篇原创文章 · 获赞 0 · 访问量 507

猜你喜欢

转载自blog.csdn.net/qq_35199832/article/details/104199708