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>子节点表示要排除在外的目标类
<context:component-scan base-package="com.lz.component" use-default-filters="flase">
	<context:include-filter type="annotation" expression=""/>
</context:component-scan>

4. 组件装配

使用@Autowired注解

  1. 先根据类型实现自动装配.
    根据类型去容器中找对应的组件。
    没找到, 抛异常.
    找到了, 找到多个: 按照bean的变量名作为ID进行匹配.
  2. 构造器、普通字段(即使是非public)、一切具有参数的方法都可以应用@Autowired注解
    方法上有@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值.

其他的自动专装配注解

  1. @Resource : java自己的注解, 扩展性更强, 因为是java的标准. 如果切换成另外一个容器框架, @Resource还是可以使用的. @Autowired就不行了
  2. @Inject

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,并提供外界获取功能
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值