IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Spring中自动装配和中注解

第一章 Spring中自动装配【基于XML】

1.1 Spring中提供两种装配方式
  • 手动装配
  • 自动装配
1.2 Spring自动装配语法及规则
  • 在bean标签中添加属性:Autowire即可

    • byName:对象中属性名称 与容器中的beanId 进行匹配,如果属性名与beanId数值一致,则自动装配成功

    • byType:对象中属性类型 与容器中class 进行匹配,如果唯一匹配则自动装配成功

      • 匹配0个:未装配

      • 匹配多个,会报错

        expected single matching bean but found 2: deptDao,deptDao2

  • 注意:基于XML方式的自动装配,只能装配非字面量数值

1.3 总结
  • 基于xml自动装配,底层使用set注入
  • 最终:不建议使用byName、byType,建议使用注解方式自动装配

第二章 Spring中注解【非常重要】

2.1 使用注解将对象装配到IOC容器中

约定:约束>配置【注解>XML】>代码

位置:在类上面标识

注意:

  • Spring本身不区分四个注解【四个注解本质是一样的@Component】,提供四个注解的目的只有一个:提高代码的可读性
  • 只用注解装配对象,默认将类名首字母小写作为beanId
  • 可以使用value属性,设置beanId;当注解中只使用一个value属性时,value关键字可省略
  • 装配对象四个注解

    • @Component:装配普通组件到IOC容器
    • @Repository:装配持久化层组件到IOC容器
    • @Service:装配业务逻辑层组件到IOC容器
    • @Controller:装配控制层|表示层组件到IOC容器
  • 使用注解步骤

    • 导入相关jar包【已导入】

    • 开启组件扫描

      xml 复制代码
      <!--    开启组件扫描
              base-package:设置扫描注解包名【当前包及其子包】
      -->
      <context:component-scan base-package="com.atguigu"></context:component-scan>
    • 使用注解标识组件

2.2 使用注解装配对象中属性【自动装配】
  • @Autowired注解

    • 作用:自动装配对象中属性

    • 装配原理:反射机制

    • 装配方式

      • 先按照byType进行匹配

        • 匹配1个:匹配成功,正常使用

        • 匹配0个:

          • 默认【@Autowired(required=true)】报错

            java 复制代码
            /*expected at least 1 bean which qualifies as autowire candidate. 	Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
            */
          • @Autowired(required=false),不会报错

        • 匹配多个

          • 再按照byName进行唯一筛选

            • 筛选成功【对象中属性名称==beanId】,正常使用

            • 筛选失败【对象中属性名称!=beanId】,报如下错误:

              java 复制代码
              //expected single matching bean but found 2: deptDao,deptDao2
    • @Autowired中required属性

      • true:表示被标识的属性必须装配数值 ,如未装配,会报错
      • false:表示被标识的属性不必须装配数值 ,如未装配,不会报错
  • @Qualifier注解

    • 作用:配合@Autowired一起使用,将设置beanId名称装配到属性中
    • 注意:不能单独使用,需要与@Autowired一起使用
  • @Value注解

    • 作用:装配对象中属性【字面量数值】
相关推荐
CHHYQMGDCDZu6 小时前
光伏系统参数
maven
2301_818732069 小时前
前端调用控制层接口,进不去,报错415,类型不匹配
java·spring boot·spring·tomcat·intellij-idea
不倒翁玩偶16 小时前
IDEA导入新的SpringBoot项目没有启动按钮
java·spring boot·intellij-idea
曾经的三心草17 小时前
redis-9-集群
java·redis·mybatis
识君啊18 小时前
MyBatis-Plus 逻辑删除导致唯一索引冲突的解决方案
java·spring boot·mybatis·mybatis-plus·唯一索引·逻辑删除
Aric_Jones18 小时前
idea使用.env运行SpringBoot项目
java·spring boot·intellij-idea
架构师刘伟18 小时前
MyBatis-Dynamic 进阶:无需实体类的全动态数据建模
mybatis
那我掉的头发算什么19 小时前
【Mybatis】Mybatis-plus使用介绍
服务器·数据库·后端·spring·mybatis
我命由我1234520 小时前
Java 泛型 - Java 泛型通配符(上界通配符、下界通配符、无界通配符、PECS 原则)
java·开发语言·后端·java-ee·intellij-idea·idea·intellij idea
czlczl2002092520 小时前
缓存穿透问题与解决方案
缓存·mybatis