欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于spring中不同包中類名相同報(bào)錯(cuò)問題的總結(jié)

 更新時(shí)間:2023年06月20日 10:13:32   作者:戴小碼  
這篇文章主要介紹了關(guān)于spring中不同包中類名相同報(bào)錯(cuò)問題的總結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

spring中不同包中類名相同報(bào)錯(cuò)問題

問題

首先采用注解方式在cn.zy.spring.anno包中創(chuàng)建UserDao類

Demo:

@Repository("userDao")
public class UserDao {
? ? public void add(){
? ? ? ? System.out.println("dao...");
? ? }
}

接著在cn.zy.spring.jdbcTemplate包中創(chuàng)建UserDao類,并增加findObjeect測試方法。

Demo:

@Component("userDao")
public class UserDao {
? ? public void find(){
? ? ? ? System.out.println("cn.zy.spring.jdbcTemplate的userDao");
? ? }
}

創(chuàng)建junit測試類:

Demo:

public class TestIOC {
? ? @Test
? ? public void testUser(){
? ? ? ? ApplicationContext application = new ClassPathXmlApplicationContext("applicationContext.xml");
? ? ? ? UserDao userDao = (UserDao) application.getBean("userDao");
? ? ? ? userDao.find();
? ? }

運(yùn)行結(jié)果報(bào)錯(cuò):

org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [applicationContext.xml]; nested exception is org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'userDao' 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]

分析原因

由于采用注解開發(fā),雖然兩個(gè)類在不同的包中,但是id卻相同,這就會(huì)導(dǎo)致創(chuàng)建了兩個(gè)相同的類,而spring是無法識(shí)別的。

解決辦法

將其中一個(gè)UserDao類的注解的name屬性改為其它值,只要不出現(xiàn)兩個(gè)相同的name值就可以。

心得

我猜想在spring的beanFactory并沒有對創(chuàng)建的對象進(jìn)行按包分類,配置文件中配置的class屬性只是為反射提供創(chuàng)建對象的路徑而已。

beanFactory就像是一個(gè)對象池子,非常雜亂,在你加載spring的配置文件時(shí),所有的對象及依賴關(guān)系都會(huì)被創(chuàng)建然后放在這個(gè)大池子中,使用的時(shí)候從里面取就可以了。

這點(diǎn)spring做的并不人性化,需要改進(jìn)??!

不同jar包類名相同怎么辦呀?

如果你在同一個(gè)項(xiàng)目中使用了不同的 jar 包,其中有兩個(gè)類名相同,那么這時(shí)候就需要用到類的全名(包括包名)。

例如,如果在你的項(xiàng)目中有兩個(gè)包,一個(gè)是 com.example.package1,另一個(gè)是 com.example.package2,且兩個(gè)包中都有一個(gè)類名為 MyClass,

那么你可以使用如下方式來區(qū)分這兩個(gè)類:

com.example.package1.MyClass
com.example.package2.MyClass

也就是使用類的全名來區(qū)分它們。

如果你想在代碼中使用這兩個(gè)類,你可以這樣寫:

import com.example.package1.M

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java字符串相關(guān)類StringBuffer的用法詳解

    Java字符串相關(guān)類StringBuffer的用法詳解

    java.lang包下的StringBuffer類,代表著可變的字符序列,可以用來對字符串內(nèi)容進(jìn)行增刪改操作。本文將通過示例詳細(xì)說說它的用法,感興趣的可以跟隨小編一起學(xué)習(xí)一下
    2022-10-10
  • IntelliJ IDEA優(yōu)化配置的實(shí)現(xiàn)

    IntelliJ IDEA優(yōu)化配置的實(shí)現(xiàn)

    這篇文章主要介紹了IntelliJ IDEA優(yōu)化配置的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java程序執(zhí)行時(shí)間的2種簡單方法

    Java程序執(zhí)行時(shí)間的2種簡單方法

    這篇文章介紹了Java程序執(zhí)行時(shí)間的2種簡單方法,有需要的朋友可以參考一下
    2013-09-09
  • Java基礎(chǔ)第四篇 封裝與接口

    Java基礎(chǔ)第四篇 封裝與接口

    本文將對介紹Java 的封裝與接口進(jìn)行介紹,將要封裝(encapsulation)對象的成員(成員包括數(shù)據(jù)成員和方法),從而只允許從外部調(diào)用部分的成員。利用封裝,我們可以提高對象的易用性和安全性。想具體了解的小伙伴請參考下面文章的內(nèi)容
    2021-09-09
  • Java使用阻塞隊(duì)列控制線程通信的方法實(shí)例詳解

    Java使用阻塞隊(duì)列控制線程通信的方法實(shí)例詳解

    這篇文章主要介紹了Java使用阻塞隊(duì)列控制線程通信的方法,結(jié)合實(shí)例形式詳細(xì)分析了java使用阻塞隊(duì)列控制線程通信的相關(guān)原理、方法及操作注意事項(xiàng),需要的朋友可以參考下
    2019-09-09
  • Java annotation元注解原理實(shí)例解析

    Java annotation元注解原理實(shí)例解析

    這篇文章主要介紹了Java annotation元注解原理實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Spring框架讀取property屬性文件常用5種方法

    Spring框架讀取property屬性文件常用5種方法

    這篇文章主要介紹了Spring框架讀取property屬性文件常用5種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • SpringBoot讀取excel表格的示例代碼

    SpringBoot讀取excel表格的示例代碼

    這篇文章主要介紹了SpringBoot讀取excel表格的示例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • mybatis某些字段無法映射成功的解決

    mybatis某些字段無法映射成功的解決

    這篇文章主要介紹了mybatis某些字段無法映射成功的解決方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Java靜態(tài)代理和動(dòng)態(tài)代理的深入講解

    Java靜態(tài)代理和動(dòng)態(tài)代理的深入講解

    這篇文章主要給大家介紹了關(guān)于Java靜態(tài)代理和動(dòng)態(tài)代理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評論