当前位置: 首页 > news >正文

关于Spring Boot IOCDC,看这一篇就够了

一,Spring是什么及常用注解

先说什么是spring,在前面的博客中已经知道了,spring是一个开源框架,为了让我们开发更加简单,那关于ioc呢,一句话概况一下:Spring就是包含了众多工具方法的Ioc容器

注解:

共有两类大注解:

类注解:@Controller、@Service、@Repository、@Component、@Configuration.

⽅法注解:@Bean.

@Controller:控制器存储,控制层,接收请求,对请求进⾏处理,并进⾏响应.

@Service:服务存储,也就是用来存储业务层组件。

@Repository:仓库存储,也称为持久层.负责数据访问操作。

@Component:组件存储,使其能够被Ioc自动扫描识别并管理。

@Configuration:配置存储,处理项⽬中的⼀些配置信息。

@Bean:方法注解,@Bean注解的方法会产生一个Bean对象,该对象由Spring管理并放到IoC容器中。

@Autowired:注入依赖,在Controller层和Service层注⼊运⾏时依赖的对象

二, 什么是Ioc

也就是比如在平常创建对象需要一个一个new,而使用了它之后,就不需要了,交给容器,集中处理,一键完成,方便省事。

Ioc:Inversion of Control  (控制反转)也就是将创建对象的控制权反转到Spring上。

IOC的优点:

1.资源的集中管理,我们需要使用的时候,直接在容器里取就可以了。

2.降低耦合度,不会牵一发而动全身,降低了依赖程度。

也就是我们将一些自己需要创建的东西外包出去,然后使他们来负责,这样即使出了问题,让他们修改就行了,我们也不用整体改了。

三,什么是DI

从上述可以看出IOC在处理的时候,其实也就是一个依赖注入的容器,而依赖注入就是DI。

DI:依赖注入,也就是在容器运行期间,动态的为应用程序提供运行时所依赖的资源。

DI也就是Ioc的一种实现,也就比如今天想出去下馆子,那么下馆子就是IOC,而去吃川菜和粤菜,就是DI。

三,依赖注入

spring依赖注入主要分为三种实现方式:属性注入,构造方法注入,setter注入

3.1属性注入

应用层代码:

@Service
public class UserService {public void doService(){System.out.println("service ...");}
}

控制层代码:

@Controller
public class HelloConteoller {@Autowiredprivate UserService userService;public void sayHi(){userService.doService();System.out.println("HelloConreoller");}

3.2构造方法注入

构造方法是在类的构造方法中实现注入:

控制层代码:

@Controller
public class HelloConteoller {//构造方法注入private UserComponent userComponent;public HelloConteoller(UserService userService){this.userService = userService;}@Autowiredpublic HelloConteoller(UserService userService, UserComponent userComponent){this.userService = userService;this.userComponent = userComponent;}
}

3.3setter方法注入

在设置setter方法的时候要加@Autowired注解。

控制层代码:

@Controller
public class HelloConteoller {// setter方法注入:@Autowiredpublic void setUserService(UserService userService){this.userService = userService;}public void sayHi(){userService.doService();System.out.println("HelloConreoller");}
}

3.4三种方法优缺点

1.属性注入:

优:简洁,方便

缺:只能使用IOC容器,其他不行,不能注入一个Final修饰的属性。

2.构造方法注入:

优:可以注入Final修饰的属性,注入的对象不会被修改,任何框架都可以支持。

缺:注入多个对象要一个一个打代码。

3.setter方法注入

优:在类实例之后,还能对该对象进行配置或者注入。

缺:也不能注入Final修饰的属性,setter方法被多次调用就会有被修改的风险。

http://www.lryc.cn/news/404076.html

相关文章:

  • Model Import Settings
  • 腾讯云COS托管静态网站,以及如何解决访问出现了下载网页的情况
  • 软件设计模式: 抽象工厂
  • 使用Vuepress搭建个人网站
  • lua 写一个 不同时区之间转换日期和时间 函数
  • 谷粒商城——session共享
  • Java 语言及其常用集合类的操作,以及反射机制与注解
  • 《系统架构设计师教程(第2版)》第12章-信息系统架构设计理论与实践-02-信息系统架构
  • 用html做python教程01
  • PHP接口与性状的优雅应用
  • R语言模型评估网格搜索
  • Haproxy服务
  • Unity VR开发入门:探索虚拟现实世界的无限可能
  • 系统架构设计师教程(清华第二版) 第3章 信息系统基础知识-3.2 业务处理系统-解读
  • 32_ConvNeXt网络详解
  • Langchain[3]:Langchain架构演进与功能扩展:流式事件处理、事件过滤机制、回调传播策略及装饰器应用
  • java导出PDF详细教程+各种踩坑
  • 【博士每天一篇文献-算法】连续学习算法之HNet:Continual learning with hypernetworks
  • 使用 tcpdump 进行网络流量捕获与分析
  • k8s集群 安装配置 Prometheus+grafana
  • 【Java--数据结构】二叉树oj题(上)
  • 微服务之间Feign调用
  • 【Qt】按钮的属性相关API
  • blender和3dmax和maya和c4d比较
  • visio保存一部分图/emf图片打开很模糊/emf插入到word或ppt中很模糊
  • 沙尘传输模拟教程(基于wrf-chem)
  • 使用 Python 进行测试(8)纯净测试
  • python的tkinter、socket库开发tcp的客户端和服务端
  • Python面试题:Python中的异步编程:详细讲解asyncio库的使用
  • 【信号频率估计】MVDR算法及MATLAB仿真