电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Spring中的注解之@Override和@Autowired

瀏覽:57日期:2022-08-12 08:04:24
一、Override

首先,@Override 注解是偽代碼,表示子類重寫父類的方法。這個(gè)注解不寫也是可以的,但是寫了有如下好處:

1. 可以當(dāng)注釋用,方便閱讀(注解很重要的一個(gè)作用就是注釋);

2. 編譯器和 IDE 可以驗(yàn)證 @Override 下面的方法名是否是父類中所有的,如果沒有的話就會(huì)報(bào)錯(cuò)。如果沒有加 @Override ,而子類中的方法名又寫錯(cuò)了,這個(gè)時(shí)候編譯器是可以編譯通過的,因?yàn)榫幾g器以為這個(gè)方法是你的子類中自己增加的方法。

下面來驗(yàn)證一下,首先有一個(gè) IPay 的父類,包含一個(gè) toPay 方法,然后 WeChatPay 子類繼承了 IPay 類,里面重寫了父類的 toPay 方法。

public class WeChatPay extends IPay { @Override public void toPay() {System.out.println('開始微信支付'); } public static void main(String[] args) {WeChatPay weChatPay = new WeChatPay();weChatPay.toPay(); }}class IPay { public void toPay() {System.out.println('開始支付'); }}

我們來執(zhí)行下 WeChatPay 中的 main 方法,輸出內(nèi)容如下:

開始微信支付

現(xiàn)在我們把父類中的 toPay 方法名改掉,可以看到代碼還沒執(zhí)行,IDE 就有錯(cuò)誤提示了:

Spring中的注解之@Override和@Autowired

如果執(zhí)行上面的代碼,編譯器會(huì)直接報(bào)錯(cuò),這是因?yàn)?toPay 方法在父類中不存在:

java: 方法不會(huì)覆蓋或?qū)崿F(xiàn)超類型的方法

這時(shí)候如果把 @Override 注解去掉,編譯是可以通過的,編譯器會(huì)認(rèn)為是子類中定義了一個(gè)新方法:

Spring中的注解之@Override和@Autowired

二、Autowired

@Autowired 顧名思義,就是自動(dòng)裝配,其作用是為了消除代碼Java代碼里面的getter/setter與bean屬性中的property。@Autowired 是 Spring 自帶的注解,通過 AutowiredAnnotationBeanPostProcessor 類實(shí)現(xiàn)的依賴注入。

將@autowored寫在被注入的成員變量上,就不用再xml文件中配置了,在程序中去掉相應(yīng)的setter和getter方法

下面用代碼測試一下:

interface IPay { String pay();}@Serviceclass Alipay implements IPay { @Override public String pay() {return '發(fā)起支付寶支付'; }}@Servicepublic class PayService { @Autowired private Alipay alipay;public String toPay() {return alipay.pay(); }}

個(gè)人理解,@Autowired 就是自動(dòng)裝箱機(jī)制。Alipay 里面的 pay 是實(shí)例方法,如果想要調(diào)用它,就必須創(chuàng)建一個(gè) alipay 對(duì)象,然后通過這個(gè)對(duì)象去調(diào)用。@Autowired 等效于下面的代碼:

public class PayService { public String toPay() { Alipay alipay = new Alipay();return alipay.pay(); }}

使用 @Autowired 注入,代碼看起來簡潔了很多

測試一下,如果把 @Autowired 注釋掉看看會(huì)怎樣:

Spring中的注解之@Override和@Autowired

哦吼,報(bào)錯(cuò)了!這說明 @Autowired 被注釋掉之后, alipay 沒有裝箱,還只是一個(gè)初始值 null ,因此無法調(diào)用 pay 方法:

Spring中的注解之@Override和@Autowired

有幾個(gè)地方需要注意下,@Autowired 必須用在 Spring bean 里面,也就是說類的外面必須要加 @Service 、@Component 等注解,讓這個(gè)類變成 bean ,不然就會(huì)報(bào)錯(cuò):

Spring中的注解之@Override和@Autowired

此外,如果是 SpringBoot 應(yīng)用,@Controller 和 @RestController 也是一個(gè)合法的 Spring bean:

@RestController@RequestMapping('pay')public class PayService { @Autowired private Alipay alipay;@GetMapping('alipay') public String toPay() {return alipay.pay(); }}

有 @RestController 就不用加 @Service 了

還有一個(gè)注意點(diǎn),需要自動(dòng)裝配的類,本身也必須是 Spring bean,也就是說前面要加 @Service ,不然 @Autowired 無法注入。

Spring中的注解之@Override和@Autowired

現(xiàn)在代碼可以正常運(yùn)行,但是 @Autowired 還是有警告,如下圖所示:

Spring中的注解之@Override和@Autowired

我們知道依賴注入有三種方式:

變量(filed)注入

@Autowiredprivate JavaMailSender mailSender;

構(gòu)造方法注入

final JavaMailSender mailSender;public IMailServiceImpl(JavaMailSender mailSender) { this.mailSender = mailSender;}

set方法注入

private JavaMailSender mailSender;@Autowiredpublic void setJavaMailSender (JavaMailSender mailSender) { this.mailSender = mailSender;}

其中第一種變量注入是不推薦的,原因可以看一下這篇文章: @Autowired(required=false)注入注意的問題

到此這篇關(guān)于Spring中的注解之@Override和@Autowired的文章就介紹到這了,更多相關(guān)注解@Override和@Autowired內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 自动钻孔机-全自动数控钻孔机生产厂家-多米(广东)智能装备有限公司 | 金属软管_不锈钢金属软管_巩义市润达管道设备制造有限公司 | 浙江红酒库-冰雕库-气调库-茶叶库安装-医药疫苗冷库-食品物流恒温恒湿车间-杭州领顺实业有限公司 | 细沙回收机-尾矿干排脱水筛设备-泥石分离机-建筑垃圾分拣机厂家-青州冠诚重工机械有限公司 | 高效复合碳源-多核碳源生产厂家-污水处理反硝化菌种一长隆科技库巴鲁 | 上海诺狮景观规划设计有限公司 | 间甲酚,间甲酚厂家-山东祥东新材料 | 电机保护器-电动机综合保护器-浙江开民| 大流量卧式砂磨机_强力分散机_双行星双动力混合机_同心双轴搅拌机-莱州市龙跃化工机械有限公司 | 耐力板-PC阳光板-PC板-PC耐力板 - 嘉兴赢创实业有限公司 | 赛尔特智能移动阳光房-阳光房厂家-赛尔特建筑科技(广东)有限公司 | 北京翻译公司-专业合同翻译-医学标书翻译收费标准-慕迪灵 | 运动木地板厂家,篮球场木地板品牌,体育场馆木地板安装 - 欧氏运动地板 | 集装袋吨袋生产厂家-噸袋廠傢-塑料编织袋-纸塑复合袋-二手吨袋-太空袋-曹县建烨包装 | 电动高压冲洗车_价格-江苏速利达机车有限公司 | 代办建筑资质升级-建筑资质延期就找上海国信启航 | 铝合金电阻-无源谐波滤波器-上海稳达电讯设备厂 | 上海网站建设-上海网站制作-上海网站设计-上海做网站公司-咏熠软件 | 洛阳装修公司-洛阳整装一站式品牌-福尚云宅装饰 | 青海电动密集架_智能密集架_密集架价格-盛隆柜业青海档案密集架厂家 | 浙江华锤电器有限公司_地磅称重设备_防作弊地磅_浙江地磅售后维修_无人值守扫码过磅系统_浙江源头地磅厂家_浙江工厂直营地磅 | 全自动五线打端沾锡机,全自动裁线剥皮双头沾锡机,全自动尼龙扎带机-东莞市海文能机械设备有限公司 | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | 连栋温室大棚建造厂家-智能玻璃温室-薄膜温室_青州市亿诚农业科技 | 上海赞永| IHDW_TOSOKU_NEMICON_EHDW系列电子手轮,HC1系列电子手轮-上海莆林电子设备有限公司 | 北京开业庆典策划-年会活动策划公司-舞龙舞狮团大鼓表演-北京盛乾龙狮鼓乐礼仪庆典策划公司 | 淋巴细胞分离液_口腔医疗器材-精欣华医疗器械(无锡)有限公司 | 假肢-假肢价格-假肢厂家-河南假肢-郑州市力康假肢矫形器有限公司 | 不锈钢闸阀_球阀_蝶阀_止回阀_调节阀_截止阀-可拉伐阀门(上海)有限公司 | 铸铝门厂家,别墅大门庭院大门,别墅铸铝门铜门[十大品牌厂家]军强门业 | 周口风机|周风风机|河南省周口通用风机厂 | 防水套管-柔性防水套管-刚性防水套管-上海执品管件有限公司 | 幂简集成 - 品种超全的API接口平台, 一站搜索、试用、集成国内外API接口 | 沈阳建筑设计公司_加固改造设计_厂房设计_设计资质加盟【金辉设计】 | 恒压供水控制柜|无负压|一体化泵站控制柜|PLC远程调试|MCGS触摸屏|自动控制方案-联致自控设备 | 山西3A认证|太原AAA信用认证|投标AAA信用证书-山西AAA企业信用评级网 | 阁楼货架_阁楼平台_仓库仓储设备_重型货架_广州金铁牛货架厂 | 工业车间焊接-整体|集中除尘设备-激光|等离子切割机配套除尘-粉尘烟尘净化治理厂家-山东美蓝环保科技有限公司 | 连栋温室大棚建造厂家-智能玻璃温室-薄膜温室_青州市亿诚农业科技 | 换网器_自动换网器_液压换网器--郑州海科熔体泵有限公司 |