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

JavaWeb学习打卡-Day1-分层解耦、Spring IOC、DI

三层架构

  • Controller(控制层):接收前端发送的请求,对请求进行处理,并响应数据
  • Service(业务逻辑层):处理具体的业务逻辑
  • DAO(数据访问层/持久层):负责数据访问,包括增删改查。

分层解耦

  • 控制反转:Inversion Of Control,IOC。对象的创建控制权由程序自身转移到外部(容器),这种思想称为控制反转。
  • 依赖注入:Dependency Injection,DI。容器为应用程序提供运行时所依赖的资源,称之为依赖注入。
  • Bean对象:IOC 容器中创建、管理的对象,称之为bean。
  • 步骤:
    • 希望将 Service 层及 Dao 层的对象,交给 IOC 容器管理,成为IOC容器中的 bean:在对应的类前添加@Component注解。
    • 为 Controller 及 Service 注入运行时依赖的对象:添加@Autowired注解。

IOC 详解

  • 要把某个对象交给IOC容器管理,需要在对应的类前加上如下注解之一:

    注解说明位置
    @Component声明bean的基础注解不属于以下三类时,用此注解(工具类)
    @Controller@Component的行生注解标注在控制器类上
    @Service@Component的行生注解标注在业务类上
    @Repository@Component的行生注解标注在数据访问类上(由于与mybatis整合,用的少)
  • 声明 bean 的时候可以通过 value 属性指定 bean 的名字,如果没有指定,默认为类名首字母小写。

  • 使用以上四个注解都可以声明 bean,但是在 springboot 集成 web 开发中,声明控制器 bean 只能用@Controller

  • 前面声明 bean 的四大注解,要想生效,还需要被组件扫描注解@ComponentScan扫描@Componentscan注解虽然没有显式配置,但是实际上已经包含在了启动类声明注解@SpringBootApplication中,默认扫描的范围是启动类所在包及其子包

DI 详解

  • @Autowired注解,默认是按照类型进行,如果存在多个相同类型的 bean,将会报错。 依赖注入
  • @Resource 与 @Autowired 的区别?
    • @Autowired 是spring框架提供的注解,而@Resource是JDK提供的注解
    • @Autowired 默认是按照类型注入,而@Resource默认是按照名称注入。

相关文章:

  • 实践项目开发-hbmV4V20250407-readme
  • Redis 慢查询分析与优化
  • 2025 年职业院校技能大赛网络建设与运维赛项Docker赛题解析
  • JS省市区三级联动查询示例代码(城市查询、地区查询)
  • SaltStack远程协助工具
  • 我用deepseek做了一个提取压缩文件夹下pdf和word文件工具
  • Java抽象类、接口和内部类介绍
  • Spring AI Alibaba Graph基于 ReAct Agent 的天气预报查询系统
  • 解决 Arduino IDE 2.3.6 在 Windows 上无法启动:缺少 Documents 文件夹与注册表路径错误
  • Spring AOP 事务
  • 【Linux专栏】zip 多个文件不带路径
  • 2025年渗透测试面试题总结-拷打题库09(题目+回答)
  • Windows1909,21H2哪个版本更稳定
  • 小刚说C语言刷题——1039 求三个数的最大数
  • 1️⃣4️⃣three.js_Stats性能监视器
  • 机器学习中,什么叫监督学习?什么叫非监督学习?
  • 25.解决中医知识问答删除历史对话功能后端处理请求时抛出异常
  • 【大数据、数据开发与数据分析面试题汇总(含答案)】
  • OpenCV训练题
  • 【Redis】Redis 特性
  • 江西九江市人大常委会原副主任戴晓慧主动交代问题,接受审查调查
  • 致敬劳动者!今年拟表彰2426名全国劳动模范和先进工作者
  • 庆祝中国印尼建交75周年招待会暨万隆会议70周年纪念活动在京举行
  • 广西通报桂林、贵港、玉林三市应对不力:管不住山火和露天焚烧
  • 商务部:消费者已累计购买以旧换新家电产品超1亿台
  • 德国男中音马蒂亚斯·格内:古典音乐的未来在亚洲