spring中不同包中類名相同報錯問題總結

2021-08-09 07:26:58 字數 1092 閱讀 4598

首先採用註解方式在cn.zy.spring.anno包中建立userdao類

demo:

@repository("userdao")

public

class userdao

}

接著在cn.zy.spring.jdbctemplate包中建立userdao類,並增加findobjeect測試方法。

demo:

@component("userdao")

public

class userdao

}

建立junit測試類:

demo:

public

class testioc

執行結果報錯:

org.springframework.beans.factory.beandefinitionstoreexception: unexpected exception parsing xml document from

for bean class [cn.zy.spring.jdbctemplate.userdao] conflicts with existing, non-compatible bean definition of same name and

class [cn.zy.spring.anno.userdao]

由於採用註解開發,雖然兩個類在不同的包中,但是id卻相同,這就會導致建立了兩個相同的類,而spring是無法識別的。

將其中乙個userdao類的註解的name屬性改為其它值,只要不出現兩個相同的name值就可以。

我猜想在spring的beanfactory並沒有對建立的物件進行按包分類,配置檔案中配置的class屬性只是為反射提供建立物件的路徑而已。

beanfactory就像是乙個物件池子,非常雜亂,在你載入spring的配置檔案時,所有的物件及依賴關係都會被建立然後放在這個大池子中,使用的時候從裡面取就可以了。

這點spring做的並不人性化,需要改進啊!

個人總結,僅供參考。

CI框架中 類名不能以方法名相同

昨天晚上乙個坑爹的問題折騰了我一晚上,首先我來說下我的 我建立了乙個index的控制器然後呢 在控制器裡有乙個index的方法。頁面模板都有。if defined basepath exit no direct script access allowed class index extends ci...

JSON過濾物件中屬性名相同(搜尋的問題及答案)

用json過濾物件中屬性名相同時都會被過濾的情況,我有乙個需求 class a class b 過濾不需要解析的屬性 jsonconfig config new jsonconfig a target new a config.setexcludes new string jsonobject js...

C 多繼承中重寫不同基類中相同原型的虛函式

在c 多繼承體系當中,在派生類中可以重寫不同基類中的虛函式。下面就是乙個例子 class cbasea class cbaseb class cderived public cbasea,public cbaseb void test 可是,如果兩個基類中有乙個相同原型的虛函式,例如下面這樣 cla...