(已解决)IOC控制反转,分层解耦复习详解

做项目时遇到了困难,所以准备再复习一下,整理一下思路。

软件设计原则:高内聚低耦合
高内聚指的是:一个模块中各个元素之间的联系的紧密程度,如果各个元素 ( 语句、程序段 ) 之间
的联系程度越高,则内聚性越高,即 " 高内聚 "
低耦合指的是:软件中各个层、模块之间的依赖关联程序越低越好。
一般我们需要什么对象都是直接new一个新的进行引用
这样会导致各个层中的耦合度较高

解耦具体操作:
创建一个容器,其官方名为:IOC容器或者sping容器
当需要这个容器时,进行依赖注入 DI
容器中的对象被称为bean对象
这样耦合度就会大大降低
示例:我自己是这样做的
dao层因为只有增删改查,我直接用mapper层代替了

首先要声明bean对象,才能进入IOC容器

在Spring Boot项目中,用于声明bean对象的注解主要有以下几种:

  1. @Component:这是最通用的注解,用于声明一个类为Spring组件。它将类作为bean注册到Spring容器中,以便在应用程序中使用。
  2. @Service:用于声明服务层的组件。通常用于业务逻辑层,它继承了@Component注解。
  3. @Repository:用于声明数据访问对象,通常用于数据库操作层。它也继承了@Component注解。
  4. @Controller:用于声明控制器组件,通常用于处理HTTP请求和响应。它继承了@Component注解。
  5. @Configuration:用于声明配置类,通常用于定义和注册bean。它还可以与@Bean注解一起使用,以便在类中定义bean。
  6. @ConfigurationProperties:用于声明属性配置类,通常用于将外部属性文件绑定到Java对象。它允许将属性文件中的值注入到Java类的字段、构造函数参数或方法参数中。
  7. @Bean:用于在配置类中声明一个bean。它告诉Spring容器在应用程序上下文中创建该类的实例,并将其注册为bean。
  8. @Primary:当存在多个相同类型的bean时,使用此注解可以指定一个首选的bean。它告诉Spring容器在自动装配时优先考虑带有此注解的bean。
  9. @Scope:用于指定bean的作用域,例如单例(singleton)、原型(prototype)等。它允许您控制bean在应用程序中的生命周期和实例化策略。

这些注解都是Spring框架的核心部分,并且在Spring Boot项目中经常使用。通过使用这些注解,您可以方便地将类、接口或配置类声明为Spring容器中的bean,并利用Spring提供的依赖注入、自动装配等功能来简化应用程序的开发。


在我的项目中我只使用了Mapper和Service来进行bean对象的声明

(已解决)IOC控制反转,分层解耦复习详解_第1张图片

我们从第一层往上梳理


首先是控制层,来接收请求,我们接收了/login的post请求,并且使用@Autowired注入了UserService接口,RequestBody转化json格式,存有user对象,使用USer调用UserService的方法login

(已解决)IOC控制反转,分层解耦复习详解_第2张图片


接下来是Service层,为了清晰且避免臃肿并且成功分层解耦,我在UserService中仅仅存放了声明。

(已解决)IOC控制反转,分层解耦复习详解_第3张图片


看起来前面两个似乎毫无关联,但我使用UserServiceimpl类并且通过接口,在写实现用法。注入了mapper bean对象

(已解决)IOC控制反转,分层解耦复习详解_第4张图片


最后是mapper层

在mapper层中存放操作数据库的sql语句,并且通过mapper注解来声明bean对象进入IOC容器

(已解决)IOC控制反转,分层解耦复习详解_第5张图片


总结:mapper操作sql语句,UserServiceimpl类通过接通UserService的声明以及注入mapper,来完成操作,控制层再注入UserService。

你可能感兴趣的:(java)