• Spring框架两大核心模块(8月5号)


    IOC&DI

    Inversion Of Control        控制反转(在运行时基于反射发现组件类和注册对象的过程)

            发现:运行时让IOC容器发现组件类

                    1、组件类的包层级不能高于启动类,只能小于等于

                    2、组件类上需要有IOC注解

            注册:发现后就会触发注册,注册就是创建对象放入IOC容器的过程

    Dependency Injection        依赖注入(赋值的过程)

            注入:在运行时,从IOC容器中找到与指针相匹配的对象赋值给指针的过程

    发现--> 注册--> 注入(都在运行时发生)

    具有IOC功能的注解

    1、@Controller/@RestController                                        spring公司

            (1)用于控制器层类的发现和注册

    2、@Service                                        spring公司

            (1)用于service层类的发现和注册

    3、@Repository(如果用了mybatis框架就不会用到这个注解)                                        spring公司

            (1)用于Dao层类的发现和注册

    4、@Component                                        spring公司

            (1)用于任意一个类的发现和注册

    5、@MapperScan()                                        苞米豆公司

            (1)用于扫描mapper包,在运行时创建接口的实现类,并注册对象到IOC容器

    什么控制权?

            创建对象的控制权 new 构造方法()

    为什么要反转?

            高内聚低耦合(将功能相似相同的写在一起,叫高内聚)

            耦合=依赖(工程依赖工程,类依赖类)

            高耦合:直接依赖了具体实现类

    Component        组件(组成工程的元件,指的是类)

    Bean/JavaBean        咖啡豆/组成(指的对象/被IOC容器发现后创建的对象)

    IOC的实现方式有几种?

    发现-注册-注入

    1、基于xml文件实现(框架早期使用,已淘汰)

            1、创建config.xml文件,放在resources目录下,xml文件可以有多个

                    拷贝文件头:

    1. <beans xmlns="http://www.springframework.org/schema/beans"
    2. xmlns:mvc="http://www.springframework.org/schema/mvc"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="
    5. http://www.springframework.org/schema/beans
    6. http://www.springframework.org/schema/beans/spring-beans.xsd
    7. http://www.springframework.org/schema/mvc
    8. http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    9. beans>

            2、启动类上加注解

                    告诉框架配置文件的位置

            3、去除掉@Controller、@Service注解

            4、去除掉@Resource注解

    2、基于注解实现

    3、基于配置类实现

            启动类就是一个配置类,或者任意一个带有@Configuration注解的类都可以是一个配置类

    发现/注册UserController

    发现/注册UserServiceImpl

    在UserController中注入UserService

    AOP

    面向切面编程(Aspect Oriented Programming)

    try.catch()finally{}非业务

  • 相关阅读:
    解决Pytest UnknownMarkWarning: Unknown pytest.mark.single - is this a typo?
    全网首发!消息中间件神仙笔记,涵盖阿里十年技术精髓
    SOC项目AHB_SD_HOST控制器设计
    C语言猜数字游戏详解及代码优化
    【C语言】文件操作
    抖音seo矩阵系统源码分享-技术梳理
    4.4K Star!推荐一款新一代的极简监控系统!轻量高性能!超500个监控指标,颜值高、功能强大!
    项目管理工具DHTMLX Gantt灯箱元素配置教程:配置灯箱元素
    .NET ORM框架HiSql实战-第一章-集成HiSql
    华为机试 - 连接器问题
  • 原文地址:https://blog.csdn.net/qq_59592117/article/details/126170345