Soft_Job 板


LINE

来补一下 "如何验证效果" 的部份 首先假设情境, A 是你的 Web App B 是那个要被 Spring 注入的东西, 假设在 "外部" "其它人开发的 jar" 里面 验证的项目 1. B "改变" 时, A 需要做哪些事? ex: B 的 package 名改了, A 要? 1-1. 什麽都不用做只要改 springboot config, 1-2. 要改 code, 1-3. 要重新 build 2. 要将 A 中的 B 替换成 C/D/E 时, 需要做哪些事? 2-1. 什麽都不用做只要改 springboot config, 2-2. 要改主程式里的 import 并重 build 2-3. 要改很多档案里的 import 叙述并重 build 2-4. 甚至还要改一卡车方法名, 连带的传入参数类型, etc 然後想想看, 假如 A 是你在维护, 然後发生第 1 点的状况 或者 A 是你买来的系统, 然後你想做第 2 点的事情如换个资料库、换个连线 lib 或者你想在 B 没完工确定前先写测试测 A 的流程跟逻辑 是能自己很容易做到, 还是得请原开发者帮忙甚至再重出一版 把各种做法, 包括 直接依赖实体、A/B 都依赖於 A 中所定义的介面、 使用 Spring 注入, 在主程式自己 new 自己塞等等, 通通用上面几项确认一下, 大概就知道效果在哪了 -- 很久没写 Java 插个花科科 ※ 引述《ntpuisbest (阿龙)》之铭言: : 推文有个连结有解答我的疑惑 : 感谢bron大 : 文章有点长 : 先说说我对依赖注入的理解 : Spring boot : 依赖注入大致有三种方式 : 透过建构子的 透过setter的 或是 field : 这三种都可以透过@Autowired注解来达到依赖注入的效果 : 我自己想到的建构子的举例是 : 假设有两个类 Address 和 Employee好了 : 1. : public class Address { : String Country; : String City; : String Street; : public Address(String country, String city, String street) { : Country = country; : City = city; : Street = street; : } : } : 2. : public class Employee { : String sex; : String name; : Address address; : // 没有依赖注入的方式 : public Employee(String Country,String City,String Street,String : sex, String name ) { : this.sex=sex; : this.address = new Address( Country, City,Street ); : this.name=name; : } : // 有依赖注入的方式 : public Employee(String sex, String name, Address address) { : this.sex = sex; : this.name = name; : this.address = address; : } : } : 在上面的例子当中可以发现,如果哪一天 : Address这个类新增了一个属性叫 phoneNumber好了 : 没有依赖注入的方式,必须要更改 Employee 的 : this.address =new Address(Country,City,Street,phoneNumber) : 而有依赖注入的方式确实降低了耦合 : 因为他不用更改Employee的建构方式 : 所以我理解依赖注入可以降低耦合 : 所以我理解依赖注入可以降低耦合 : 所以我理解依赖注入可以降低耦合 : 但我的问题是Spring boot 的 autowird annotation 有帮助我们降低耦合吗 : 在常见的开发中 我们经常都会有 Dao 以及 Service : 假设我有两个 Dao 好了 分别是 Dao1 和 Dao2 : 以及一个Service : Dao1 : public class Dao { : public void sayhi() { : System.out.println("hello"); : } : } : Dao1 : public class Dao { : public void sayhi() { : System.out.println("hello"); : } : } : Dao2 : public class Dao2 { : public void saygoodbye() { : System.out.println("say goodbye"); : } : } : 如果我不在service上面使用autowired : 我的service会是 : public class Service { : Dao1 dao=new Dao1(); : Dao2 dao2=new Dao2(); : public void sayhi() { : dao.sayhi(); : } : public void saygoodbye() { : dao2.saygoodbye(); : } : } : 如果我使用了@Autowired注解 : 那我只是将 : Dao1 dao=new Dao1(); : Dao2 dao2=new Dao2(); : 替换成 : @Autowired : Dao1 dao : @Autowired : Dao2 dao2 : 我想请问所以我使用了Autowired注解 : 我知道我可以不需要使用new 来建构实体 : 但 Spring 真的有帮我降低耦合吗 : 即使我换成 setter 配合 autowired的方式好了 : 那个 setter也是要我自己去撰写 : Spring 帮我降低了耦合甚麽? : 我的问题简单来说就是 : 我知道依赖注入可以降低耦合 : 但Spring boot透过 @Autowired注解帮我降低耦合在哪 : 谢谢 : p.s 因为面试的时候常常被面试官问说懂不懂甚麽是 : 控制反转还有DI,我基本上举例都举 Address还有 Employee的例子 : 但当我反问下面例子的时候,他们好像也说要再回去想一下... : 只有其中一个就说更复杂的例子会用到,但也没说甚麽是更复杂的例子QQ --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.37.200.216 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1648827062.A.C39.html
1F:推 yupog2003: 这篇对我来说很好懂 04/02 08:53
2F:推 s06yji3: thanks 04/03 10:44







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP