javascript
使用Spring框架开发会遇到的所有异常及解决方案(持续更)
①org.springframework.beans.factory.NoUniqueBeanDefinitionException
Exception in thread “main” org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [com.sms.spring.pojo.Person] is defined: expected single matching bean but found 2: person1,person2
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:312)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:985)
at com.sms.spring.test.TestPerson.main(TestPerson.java:22)
異常原因:Spring的配置文件中配置了一個類的多個bean,而通過bean獲取對象的時候使用的getBean(Class)方法,程序不知道獲取這個類的哪個bean,因此報異常。
解決方案:如果在配置文件中配置了多個bean,則獲取對象的時候避免使用getBean(Class< T >)方法,使用getBean(String name)方法通過id選擇較為合理
②Caused by: java.lang.NoSuchMethodException
Caused by: java.lang.NoSuchMethodException: com.sms.spring.pojo.Person.()
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.getDeclaredConstructor(Class.java:2178)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:80)
… 14 more
異常原因:Spring通過反射創建對象的時候需要用到該類中的無參構造器,而你寫的類中沒有。
解決方案:給類實體類加上無參構造器。
③Caused by: org.springframework.beans.NotWritablePropertyException
Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property ‘list’ of bean class [com.sms.spring.pojo.Teacher]: Bean property ‘list’ is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:1060)
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:918)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:82)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:62)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1489)
… 13 more
異常原因:通過Spring創建對象后,依賴注入屬性時,某些屬性未添加getter/setter方法,因此報錯。
解決方案:給實體類加上缺失的getter/setter方法。
④Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.sms.spring.service.UserService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1100)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:960)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:855)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:480)
… 15 more
異常原因:spring未找到這樣的一個bean,可能是這個類沒掃描到,包掃描出現錯誤;可能是注解加錯了或沒加注解。
解決方案:設置正確的包掃描,并檢查所有的注解是否標注正確沒有遺漏。
⑤Error creating bean with name ‘mathImpl’ defined in file :
Exception in thread “main” org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘mathImpl’ defined in file [E:\developer_tools\java\workspace\SSM\day3_spring\target\classes\com\sms\spring\aop\MathImpl.class]: Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting ‘)’ at character position 0
execution(* com.sms.spring.aop.MathImpl.add(int,int)
^
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:547)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:700)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:83)
at com.sms.spring.aop.Test.main(Test.java:9)
異常原因:創建bean失敗,使用spring進行aop開發時,切入點表達式寫錯了。
解決方案:檢查切入點表達式是否缺失’)’,’,'等。
⑥Class ‘org.springframework.transaction.event.TransactionalEventListenerFactory’ not found:
異常原因:spring未從項目中加載命名空間。
解決方案:
⑦java.lang.IllegalArgumentException: Expected MultipartHttpServletRequest: is a MultipartResolver configured?
java.lang.IllegalArgumentException: Expected MultipartHttpServletRequest: is a MultipartResolver configured?
at org.springframework.util.Assert.notNull(Assert.java:112)
at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.resolveName(RequestParamMethodArgumentResolver.java:161)
at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:86)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:79)
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:157)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:124)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:748)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110
at java.util.concurrent.ThreadPoolExecutor$ Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
異常原因:spring實現上傳功能的時候沒有配置MultipartResolver解析器,java中的file類型不能轉化為MultpartFile類型。
解決方案:在springMVC加入一個bean,class=“org.springframework.web.multipart.commons.CommonsMultipartResolver”。
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>總結
以上是生活随笔為你收集整理的使用Spring框架开发会遇到的所有异常及解决方案(持续更)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring框架在属性注入时@Autow
- 下一篇: jdk中的动态代理和cglib中动态代理