簡體   English   中英

沒有定義名為[x]的bean

[英]No bean named [x] is defined

我一天中大部分時間都在尋找和辛苦工作,以使某些東西能夠正常工作。 情況如下:

情況

我正在為我們正在使用的工具進行審計跟蹤。 此工具用於編輯信息(例如網站上的文本)。 現在一切正常,但是有一個小問題:現在我正在將用戶數據(用戶名,密碼,ipAddress)存儲在@ context-info(MSSQL)中。 只要一次有一個用戶登錄,此方法就可以正常工作,但是這種情況很少發生

例:

  • 我登錄
  • 我編輯東西
  • 我編輯的資料以我的名字登錄
  • 有人登錄系統
  • 我編輯的資料是以該其他用戶的名稱而不是我自己的名稱記錄的,因為@ context-info在登錄時已更改。

解決方案

一個會話范圍的Bean,用於存儲本地會話數據,然后將每個數據庫查詢的參數通過攔截器傳遞給上下文信息。

到目前為止我做了什么

我目前正在遵循該指南: Spring Bean Scopes-Tutorialspoint,用於獲取會話范圍的Bean。 我在support-servlet.xml中定義了以下內容(這是我們定義bean的地方):

<!-- Session Beans -->
<bean id="helloWorld" class="com.lcmg.ticket.support.service.HelloWorld" scope="session">

</bean>

.java文件已從教程中獲取,並且可以進行到一定程度。 例如:

ApplicationContext context = new ClassPathXmlApplicationContext("support-servlet.xml");

給我問題,直到我將參數更改為

("classpath*:support-servlet.xml")

然后這發生了..

問題

問題出在這里:

HelloWorld hwA = (HelloWorld)context.getBean("helloWorld");

如果我調試並越過這條線, 登錄該工具后,我的臉上就會拋出一個名為'helloWorld'No bean定義的異常。 我在谷歌上搜索,修修補補和擺弄,到今天結束時,我仍然沒有解決方案。

因此,問題是:如何使該會話bean工作?

希望我提供了足夠的信息,但請隨時詢問您是否需要更多信息。

所以我擺弄了一些,然后這樣做:

Bean定義已移至其他.xml(我們顯然將applicationContext.xml與其他scope =“ session” Bean一起使用,現在看起來像這樣(我也更改了實現的名稱,等等):

<bean id="auditUser" class="com.lcmg.ticket.support.service.model.AuditUser" scope="session">

</bean>

我轉儲了整個applicationContext context ..位,而是將bean映射到class-bean,如下所示:

<bean name="/historyList" class="com.lcmg.ticket.support.web.controller.HistoryListController">
    /*Other-for-this-example-useless properties*/
    <property name="auditUser" ref="auditUser"/>
</bean>

然后,我可以在代碼中創建一個變量auditUser ,創建一個setter,然后執行此操作:

auditUser.setSessionUser(sessionUser);
auditUser.setPassword(command.getPassword());

現在就可以了。 沒有更多的錯誤,每當我從auditUser調用某些內容時,整個會話期間都是相同的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM