码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Web开发三层架构


    ##Controller Service Dao(mapper)

    在这里插入图片描述

    软件设计:高内聚 低耦合

    Controller 调用Service, Service调用 DAO 模块之间耦合
    在这里插入图片描述

    如果要从EmpServiceA切换到EmpServiceB,Controller代码也要修改

    new EmpServiceB
    在这里插入图片描述

    分层接耦

    容器中放EmpServiceA, Controller需要对象去容器中找
    如果要将实现类由EmpServiceA 切换为EmpServiceB,可以基于B对象在容器中创建一个对象,即使Service中实现类发生变化,Controller代码也不需要改动

    在这里插入图片描述

    1.对象怎么交给容器管理

    ①类交给IOC容器管理,在类上加注解 @Component
    在这里插入图片描述

    2.容器怎么为程序提供依赖的资源

    ②Controller需要 empservice对象,给empService加上@Autowired注解

    在这里插入图片描述

    在这里插入图片描述
    此时如果要切换实现类:EmpServiceA 切换到EmpServiceB,将A上面的 //@Component注释掉就可以

    保留EmpServiceB上的@Component

    Java中的Bean

    Controller Service Repository 将对象交给IOC容器管理,默认封装了Component注解

    不能用上面三个注解标识,就交给Component,典型的使用场景是工具类

    在这里插入图片描述

    • 申明Bean时候,可以通过注解中的value属性指定Bean的名字,没有指定Value属性,Bean名字默认类名首字母小写
    • 在这里插入图片描述

    Bean的组件扫描

    申明一个Bean,不一定会生效,设计到组件扫描的问题
    在这里插入图片描述

    在这里插入图片描述

    启动类自动加上了组件扫描注解,默认扫描范围是启动类所在包及其子包,如果有些Bean不在这个目录下,启动会失败,b比如dao代码

    在这里插入图片描述

    在这里插入图片描述

    解决方法:自己加上ComponentScan(不推荐)
    推荐:将所写的代码全部放到启动类及其子包下面
    在这里插入图片描述

    依赖注入

    • ① AutoWired

    有两个EmpService的Bean,EmpServiceA,EmpServiceB:使用哪个?
    程序启动时就报错:

    在这里插入图片描述

    解决方法:

    (1)@Primary 设置优先级,想要哪个Bean生效,就在哪个Bean上加@Primary
    在这里插入图片描述

    (2)@Autowired配合@Qualifier(“empServiceA”), 加上bean的名字,默认类名首字母小写

    Autowired默认按照类型注入

    在这里插入图片描述

    @Resource默认按照名称注入

    jdk提供的
    在这里插入图片描述

  • 相关阅读:
    使用vagrant在virtualBox中安装linux虚拟机
    计算并输出杨辉三角(C语言)
    一个有些意思的项目--文件夹对比工具(一)
    始祖双碳新闻 | 2022年8月18日碳中和行业早知道
    养猫喂国产还是进口生骨肉冻干比较安心?全网热门养猫人必备生骨肉冻干
    openMVS
    Intel汇编语言程序设计(第7版)第七章编程练习题答案
    微服务架构-微服务架构的挑战与微服务化的具体时机
    基于javaweb+mysql的SSH校园二手交易平台
    java基于springboot+vue的自习室座位预约系统 elementui
  • 原文地址:https://blog.csdn.net/weixin_43692030/article/details/138868431
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号