聊聊spring繼承的問(wèn)題
spring繼承的問(wèn)題
為什么輸出是0呢?
因?yàn)槭亲宇惱^承父類,實(shí)例對(duì)象調(diào)用的主要是左邊的父類屬性和方法,所以輸出結(jié)果是以左邊對(duì)象為主
spring注入有繼承關(guān)系的類
通過(guò)配置文件
<bean id="sysActionService" class="com.service.impy.SysActionServiceImpy" parent="baseService" > <property name="sysActionDao" ref="sysActionDao" /> </bean>
通過(guò)注解
只需要在子類上加注解,父類上不用加會(huì)自動(dòng)注入
package com.jeremy.spring.genericityDI; public class BaseRepository{ }
BaseService:
package com.jeremy.spring.genericityDI; import org.springframework.beans.factory.annotation.Autowired; public class BaseService<T> { @Autowired------//這里告訴IOC容器自動(dòng)裝配有依賴關(guān)系的Bean protected BaseRepository baseRepository;--------//這里是子類繼承依賴關(guān)系 public void add(){ System.out.println("add.............."); System.out.println(baseRepository); } }
新建一個(gè)泛型類
User:
package com.jeremy.spring.genericityDI; public class User { }
新建BaseRepository和BaseService的子類
UserRepository:
package com.jeremy.spring.genericityDI; import org.springframework.stereotype.Component; @Component public class UserRepository extends BaseRepository{ }
UserService:
package com.jeremy.spring.genericityDI; import org.springframework.stereotype.Service; @Service public class UserService extends BaseService{ }
在Spring的配置文件中配置自動(dòng)裝配帶有注解的Bean
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> <context:component-scan base-package="com.jeremy.spring.genericityDI"></context:component-scan> </beans>
測(cè)試代碼和結(jié)果
測(cè)試代碼:
@Test public void test() { ApplicationContext actx=new ClassPathXmlApplicationContext("Bean-genericity-di.xml"); UserService userService=(UserService) actx.getBean("userService"); userService.add(); }
測(cè)試結(jié)果:
add..............
com.jeremy.spring.genericityDI.UserRepository@16546ef
從結(jié)果看,雖然子類沒(méi)有建立依賴關(guān)系,但userRepository實(shí)例還是被實(shí)例化了,就證明了父類的依賴關(guān)系,子類是可以繼承的
其實(shí)這里也可以說(shuō)明,就算父類不是被IOC容器管理,但是建立關(guān)系時(shí)添加了@Autowired注解,父類的關(guān)系會(huì)被繼承下來(lái)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java解析http協(xié)議字符串的方法實(shí)現(xiàn)
本文主要介紹了Java解析http協(xié)議字符串的方法實(shí)現(xiàn),我們探討了如何使用Java解析HTTP協(xié)議字符串,并將其封裝成了一個(gè)HttpRequest類,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09IDEA中啟動(dòng)多個(gè)SpringBoot服務(wù)的實(shí)現(xiàn)示例
本文主要介紹了IDEA中啟動(dòng)多個(gè)SpringBoot服務(wù)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08Java9 Stream Collectors新增功能(小結(jié))
這篇文章主要介紹了Java9 Stream Collectors新增功能(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12java隊(duì)列實(shí)現(xiàn)方法(順序隊(duì)列,鏈?zhǔn)疥?duì)列,循環(huán)隊(duì)列)
下面小編就為大家分享一篇java隊(duì)列實(shí)現(xiàn)方法(順序隊(duì)列,鏈?zhǔn)疥?duì)列,循環(huán)隊(duì)列),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12