1. 程式人生 > >在spring的bean中注入內部類

在spring的bean中注入內部類

spring中注入內部類,有可能會遇到如下異常資訊:

2014-5-1421:52:45 org.springframework.context.support.AbstractApplicationContext prepareRefresh
資訊:Refreshing org.springframework.context.support.[email protected]: startup date [WedMay1421:52:45 CST 2014]; root of context hierarchy
2014-5-1421:52:45 org.springframework
.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 資訊:Loading XML bean definitions fromclass path resource [spring.xml]2014-5-1421:52:46 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons 資訊:Pre-instantiating singletons in org.springframework.beans
.factory.support.[email protected]: defining beans [person]; root of factory hierarchy 2014-5-1421:52:46 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons 資訊:Destroying singletons in org.springframework.beans.factory.support.[email protected]: defining beans
[person]; root of factory hierarchy Exceptionin thread "main" org.springframework.beans.factory.BeanCreationException:Error creating bean with name 'person'definedinclass path resource [spring.xml]:Cannot create inner bean 'cn.outofmemory.spring.Person$Hand#ab7165' of type [cn.outofmemory.spring.Person$Hand]while setting bean property'hands'with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException:Error creating bean with name 'cn.outofmemory.spring.Person$Hand#ab7165'definedinclass path resource [spring.xml]:Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException:Couldnot instantiate bean class[cn.outofmemory.spring.Person$Hand]:Nodefault constructor found; nested exception is java.lang.NoSuchMethodException: cn.outofmemory.spring.Person$Hand.<init>() at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:281) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:120) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:353) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:153) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) at cn.outofmemory.spring.App.main(App.java:14)Causedby: org.springframework.beans.factory.BeanCreationException:Error creating bean with name 'cn.outofmemory.spring.Person$Hand#ab7165'definedinclass path resource [spring.xml]:Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException:Couldnot instantiate bean class[cn.outofmemory.spring.Person$Hand]:Nodefault constructor found; nested exception is java.lang.NoSuchMethodException: cn.outofmemory.spring.Person$Hand.<init>() at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:965) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:911) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:270)...17 more Causedby: org.springframework.beans.BeanInstantiationException:Couldnot instantiate bean class[cn.outofmemory.spring.Person$Hand]:Nodefault constructor found; nested exception is java.lang.NoSuchMethodException: cn.outofmemory.spring.Person$Hand.<init>() at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:70) at org.springframework.beans

相關推薦

在spring的bean注入部類

在spring中注入內部類,有可能會遇到如下異常資訊: 2014-5-1421:52:45 org.springframework.context.support.AbstractApplicationContext prepareRefresh 資訊:Refreshing org.springframe

Spring的bean注入部類

在spring中注入內部類,有可能會遇到如下異常資訊: 2014-5-14 21:52:45 org.springframework.context.support.AbstractApplicationContext prepareRefresh 資訊: Refreshi

JAVA部類

類變量 類名 blog int 什麽 fun 位置 log static成員 將一個類定義在另一個類的裏面,裏面的那個類就叫做內部類(嵌套類,內置類) 內部類的訪問規則: 內部類可以直接訪問外部類中的成員,包括私有 外部類要訪問內部類,必須建立內部類對象 之所以可以直

Java部類的概述和部類的訪問特點和部類的分類(部類的位置)

back 外部 mage 對象 post info bsp 一個 strong 內部類的概述:   把類定義在另一個類的內部,該類就被稱為內部類。   舉例:把類B定義在類A中,類B就被稱為內部類。 內部類的訪問特點:   A:內部類可以直接訪問外部類的成員,包括

Android小知識-剖析Retrofit靜態部類Builder的三個方法

本平臺的文章更新會有延遲,大家可以關注微信公眾號-顧林海,包括年底前會更新kotlin由淺入深系列教程,目前計劃在微信公眾號進行首發,如果大家想獲取最新教程,請關注微信公眾號,謝謝! 在上章節《Android小知識-剖析Retrofit中的網路請求流程以及相關引數》中介紹了Retrofit的成員變

java部類和靜態部類

以下程式執行結果為 public class Test { public class A{ public String test="A"; } public static class B{ public Strin

java部類執行先後循序問題

首先我們要明白java中的內部類是什麼呢?有什麼好處呢?為什麼要用到內部類呢?下面這兩個部落格介紹都挺好的 https://blog.csdn.net/gaoyong_stone/article/details/79556287 https://www.cnblogs.com/hypno

Java部類、匿名類、匿名部類

內部類 Java中在一個類的內部定義的類叫做內部類(inner class)。建立一個內部類時,其物件就擁有了與外部類物件之間的關係。這種通過this來引用形成的,是內部類物件可以隨意訪問外部類中的所有成員變數!(因為被private修飾的成員變數和成員方法僅能被該類所使用,內部類中可以

java 部類總結

內部類不是很好理解,但說白了其實也就是一個類中還包含著另外一個類。 如同一個人是由大腦、肢體、器官等身體結果組成,而內部類相當於其中的某個器官之一,例如心臟:它也有自己的屬性和行為(血液、跳動)。 顯然,此處不能單方面用屬性或者方法表示一個心臟,而需要一個類。 而心臟又在人體當

Android部類引起的記憶體洩露

引子 什麼是內部類?什麼是記憶體洩露?為什麼Android的內部類容易引起記憶體洩露?如何解決? 什麼是內部類? 什麼是內部類?什麼又是外部類、匿名類、區域性類、頂層類、巢狀類?大家可以參考我這篇文章 ,再查查一些資料,先弄清楚什麼是內部類和內部類的特性再向下看。 經常會遇見Android程式中這樣

java匿名部類總結

匿名內部類也就是沒有名字的內部類 正因為沒有名字,所以匿名內部類只能使用一次,它通常用來簡化程式碼編寫 但使用匿名內部類還有個前提條件:必須繼承一個父類或實現一個介面 例項1:不使用匿名內部類來實現抽象方法 abstract class Person { public a

fastjson parse類部類時,且部類巢狀部類報錯

com.alibaba.fastjson.JSONException: create instance error, class com.XXXX.model.ClassA$ClassInnerBat com.alibaba.fastjson.parser.deserial

java部類(巢狀類)

1.內部類:定義在另一個類裡面的類 外部類:包含內部類的類 2.內部類的名字不允許與外部類的名字相同。因為在外部引用它時必須給出帶有外部類名的完整名稱(外部類名.內部類名) 3.內部類可以是抽象類或介面,若是介面,則可以由其他巢狀類實現。 4.巢狀類不要濫

java部類總結

內部類不是很好理解,但說白了其實也就是一個類中還包含著另外一個類 如同一個人是由大腦、肢體、器官等身體結果組成,而內部類相當於其中的某個器官之一,例如心臟:它也有自己的屬性和行為(血液、跳動) 顯然,此處不能單方面用屬性或者方法表示一個心臟,而需要一個類

深入理解Java為什麼部類可以訪問外部類的成員

{ final Outer this$0; flags: ACC_FINAL, ACC_SYNTHETIC Outer$Inner(Outer); flags: Code: stack=2, locals=2, args_size=2 0: a

Java 反射部類的問題!!!

在寫程式中運用了反射機制,一連報兩個錯誤,一個是:java.lang.ClassNotFoundException ; 另一個是:java.lang.InstantiationException 。 內部類反射問題: 1、java.lang.Cla

java部類和外部類的區別

   由於方法中的宣告的變數,它是在方法執行時,載入到棧記憶體中,隨著方法執行結束就會被銷燬釋放。而匿名內部類是類成員的一種,它的生命週期跟外部類是一致的,這就導致方法中的變數被銷燬後,匿名內部類物件還可以訪問它,這顯然不符合邏輯。所以java這樣解決,使用final修飾,首先讓大家都不要再改動,然後匿名內部

Java之靜態方法部類

靜態方法中不能直接建立內部類,為什麼呢?在外部呼叫靜態方法時,可以使用"類名.方法名"的方式,也可以使用"物件名.方法名"的方式。而例項方法只有後面這種方式。也就是說,呼叫靜態方法可以無需建立物件。 靜態方法在訪問本類的成員時,只允許訪問靜態成員(即靜態成員變數和靜態方法

靜態方法使用部類不能通過new

首先來看一下錯誤程式碼, public class TraditionalThreadSynchronized { public static void main(String[] arg

java部類完全總結

一.內部類基礎   在Java中,可以將一個類定義在另一個類裡面或者一個方法裡面,這樣的類稱為內部類。廣泛意義上的內部類一般來說包括這四種:成員內部類、區域性內部類、匿名內部類和靜態內部類。下面就先來了解一下這四種內部類的用法。   1.成員內部類