• spring4:基于注解管理bean


    一.标记与扫描

    1.标记

    • 注解本身只是做一个标记,然后框架检测到注解的位置,针对注解标记的功能执行具体操作
      即xml和注解告诉框架java代码如何执行

    2.扫描

    • 即spring框架需要指导程序员在哪些地方标记了注解,需要通过扫描的方式来进行检测。根据注解进行后续的操作。

    二.注解的使用

    1.注解的使用框架

    在这里插入图片描述

    2.注解的标注

    • 四个注解的意义一样,其他三个注解只是@Component注解的三个别名,目的是为了让开发人员更好的辨识组件的作用

    3.扫描

    ①扫描类型

    • 扫描包下所有类
    <context:component-scan base-package="com.atguigu">
    context:component-scan>
    
    • 1
    • 2
    • 指定包下扫描并且排除某些类(spring负责其他组件,springmvc负责控制层)
    <context:component-scan base-package="com.atguigu">
    
    
    <context:exclude-filter type="annotation"
    expression="org.springframework.stereotype.Controller"/>
    
    context:component-scan>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 仅扫描指定组件
    <context:component-scan base-package="com.atguigu" use-default-filters="false">
    
    
    
    
    <context:include-filter type="annotation"
    expression="org.springframework.stereotype.Controller"/>
    
    context:component-scan>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    三.注解实现IOC的原理

    1.bean的id属性和class属性

    ①id属性

    • 默认id:类名首字母小写就是bean的id。例如:UserController类对应的bean的id就是userController。
    • 自定义id:自定义bean的id,可通过标识组件的注解的value属性设置自定义的bean的id
      @Service(“userService”)//默认为userServiceImpl public class UserServiceImpl implements
      UserService {}

    ②class属性

    • 即注解标注的class

    2.基于注解的自动装配

    ①@Autowired注解

    • 成员变量: 在成员变量上直接标记@Autowired注解即可完成自动装配,不需要提供setXxx()方法。以后我们在项目中的正式用法就是这样。
    • 构造器和set方法之前也可以加

    ②自动装配的实现细节

    • 根据组件类型到IOC容器中去匹配(byType)
    • 如果根据类型没有查找到
      • @Autowired默认为强制装配,出现装配异常
      • 设置@Autowired为没有不装配,出现空指针异常
    • 如果根据类型查找到多个bean
      • 如果使用@Qualifier注解,则根据注解标识的id寻找bean,如果找到装配成功,没找到装配失败
      • 如果未使用@Qualifier注解,根据@Autowired标记位置成员变量的变量名作为bean的id进行匹配,能够找到装配成功,没找到装配失败
  • 相关阅读:
    monkeyrunner录制脚本和回放
    如何在 PyQt 中实现异步数据库请求
    C Primer Plus(6) 中文版 第12章 存储类别、链接和内存管理 12.3 掷骰子
    【程序人生】上海城市开发者社区小聚有感
    Python-装饰器
    高频SQL 判断三角形
    SpringMVC简介
    【前段基础入门之】=>初识 HTML
    shell_57.Linux创建自己的重定向
    Centos 7 迁移到 Anolis OS 7.9 及问题处理
  • 原文地址:https://blog.csdn.net/qq_44724899/article/details/127697579