第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring將子類自動注入父類失敗

Spring將子類自動注入父類失敗

拉風(fēng)的咖菲貓 2019-04-19 15:15:10
@Controller public class LoginController{     @Resource(name="loginService")     private IService loginService;     @RequestMapping("/login")     @Autowired     public ModelAndView index(BaseClassDo logindo){         LoginDo ll= (LoginDo) logindo;         ModelAndView mv = new ModelAndView();         System.out.println(logindo); //      mv = loginService.doService(logindo);         mv.setViewName("login");         return mv;     } }上面index方法中,初始化的時候使用斷點(diǎn)顯示logindo是自動注入成功的,顯示的是子類的字段,但是之后從頁面jsp跳轉(zhuǎn)過來后,注入失敗,顯示的只有父類的兩個字段,而且強(qiáng)轉(zhuǎn)失敗java.lang.ClassCastException,難道從前臺傳到后天還有什么講究嗎使用@autowrie或@Resource都試過,沒有用下面是實(shí)體表父類public class BaseClassDo {     /**      * 業(yè)務(wù)類型      */     private String ywtype;     /**      * 業(yè)務(wù)狀態(tài)      */     private String ywstate;     getset方法略子類@Component("loginDo") public class LoginDo extends BaseClassDo {     private String job_id;     private int worker_id;     private String login_pw;     private String worker_name;     getset方法略
查看完整描述

6 回答

?
翻過高山走不出你

TA貢獻(xiàn)1875條經(jīng)驗 獲得超3個贊

@Controller
public class LoginController{

    @Resource(name="loginService")
    private IService loginService;

    @RequestMapping("/login")
    @Autowired
    public ModelAndView index(BaseClassDo logindo){
        LoginDo ll= (LoginDo) logindo;
        ModelAndView mv = new ModelAndView();
        System.out.println(logindo);
//      mv = loginService.doService(logindo);
        mv.setViewName("login");
        return mv;
    }
}

樓上說的對,你這方法上的@Autowired是想要做什么?和@RequestMapping一起用?
如果想通過方法注入的話,那新創(chuàng)建一個方法然后用上@Autowired注入就行了,至于@RequestMapping是用于處理請求的


查看完整回答
反對 回復(fù) 2019-05-14
?
幕布斯7119047

TA貢獻(xiàn)1794條經(jīng)驗 獲得超8個贊

指的是根據(jù)請求的參數(shù)綁定為相應(yīng)的實(shí)體類型嗎?只不過這些實(shí)體類型都繼承自BaseClassDo 是嗎?比如前端傳job_id、worker_id、login_pw、worker_name這四個參數(shù),這個時候在index方法的參數(shù)實(shí)際類型就是LoginDo了?然后如果前端傳其他參數(shù),那就會綁定到另一個BaseClassDo的具有這些參數(shù)對應(yīng)字段的子類,是這個意思不?

查看完整回答
反對 回復(fù) 2019-05-14
?
偶然的你

TA貢獻(xiàn)1841條經(jīng)驗 獲得超3個贊

通過頁面請求發(fā)現(xiàn)代碼真正邏輯是頁面請求了一個子類Action的方法,而這個方法里面調(diào)用了父類的一個方法,此時父類里面的Service一直無法注入,對于上面所提的這種需求,實(shí)際上是需要在子類做Spring注入的同時也進(jìn)行父類的Spring注入,那么這種需要這樣的配置:

<bean id="barePhoneAction" class="com.eshore.crm.contrl.termmgr.mgr.action.BarePhoneAction" scope="prototype" parent="termCommonAction">
        <property name="orderVerifyApiFacade" ref="ord.bizprov.orderVerifyApiFacade"/>
        <property name="orderListQryApiFacade" ref="ord.query.orderListQryApiFacade"/>
        <property name="channelQryApiFacade" ref="cfguse.channel.channelQryApiFacade" />
</bean>

經(jīng)過上面的設(shè)置以后,請求子類的Action方法,子類方法中調(diào)用父類方法時,就不會出現(xiàn)父類不發(fā)生注入的問題了。


查看完整回答
反對 回復(fù) 2019-05-14
?
慕妹3242003

TA貢獻(xiàn)1824條經(jīng)驗 獲得超6個贊

@Autowired的使用上有問題。
一般情況下,@Autowired標(biāo)注在方法上的時候,會在容器初始化時去調(diào)用方法“進(jìn)行賦值”,但也僅此而已了,之后的操作和@Autowired就沒關(guān)系了

正常的前后端請求傳遞的參數(shù)是由前端傳入的,并不是容器注入的


查看完整回答
反對 回復(fù) 2019-05-14
  • 6 回答
  • 0 關(guān)注
  • 1239 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號