org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class com.lj.cms.service.IndexService]: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given
Caused by:
java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given
<aop:config>
<aop:aspect ref="indexService">
<aop:pointcut id="generateTopPoint"
expression="execution(* com.lj.cms.service.ChannelService.add*(..))||
execution(* com.lj.cms.service.ChannelService.delete*(..))||
execution(* com.lj.cms.service.ChannelService.update*(..))"/>
<aop:after method="generateTop" pointcut-ref="generateTopPoint"/>
</aop:aspect>
</aop:config>
<bean id="ftlPath" class="java.lang.String">
<constructor-arg value="/ftl"></constructor-arg>
</bean>
<bean id="outPath" class="java.lang.String">
<constructor-arg value="/jsp/template"></constructor-arg>
</bean>
@Autowired(required=true)
public IndexService(String ftlPath,String outPath)
{
if(util==null){
this.outPath = outPath;
util=FreemarkerUtil.getInstance(ftlPath);//ftlPath在beans.xml中配置了依赖注入,值为/ftl
}
}
上述代码原本运行时是没有错误的。
后来因为需求把 <aop:config> 的内容去掉了。
结果就一直报如上错误。
弄了半天, 最后在stackoverflow上找到原因:
http://stackoverflow.com/questions/13711347/spring-constructor-dependency-injection-issues
Classes to be proxied by CGLIB (for AOP support) must have no-args constructors.
These no-args constructors don't have to be public and it doesn't affect anything else - you can use other constructors as usually:
因此只要加入
public IndexService()
{
}
问题就解决了。
分享到:
相关推荐
在编程领域,尤其是在面向对象编程(OOP)中,"Instance of Subclass" 和 "Instance of Superclass" 是两个核心概念,它们与继承、多态等特性紧密相关。"Subclass"(子类)和 "Superclass"(超类或父类)是描述类...
在编程领域,尤其是在面向对象的编程中,"superclass"(超类)是一个核心概念。超类是继承机制的一部分,它定义了一组方法和属性,这些可以被子类继承和扩展。当我们谈论`Test_invoke_super.rar_Superclass`时,这...
"Test_invoke_super_range.rar_Superclass"的标题暗示了我们讨论的是一个关于调用超类方法的主题,特别是与范围(range)有关的。这可能指的是在继承链中的不同层次上调用超类的方法。描述中提到的“invoke method ...
This superclass can be used to create a simple search suggestions provider for your application Source Code for Linux.
Classes Doing Work in Constructors Default Constructors Explicit Constructors Copy Constructors Structs vs. Classes Inheritance Multiple Inheritance Interfaces Operator Overloading Access Control ...
现象: … java: 1801: method does not override a method from its superclass @Override… 原因: Eclipse is defaulting to Java... but in Java 1.5 can only be applied to methods overriding a superclass meth
SuperClass是JavaScript预处理器/解释器对象,旨在促进JavaScript中基于类的OOP。 注意:项目已关闭。 替换为:http://sourceforge.net/projects/jsclass
Noa 是一个快速、小巧、精心编写的 javascript MVC 框架。 它有3个主要目标。 成为您需要的一切。 解决大型和小型应用程序存在的常见问题和陷阱。 要容易写。文档楷模活动应用程序 诺亚Noa 有0 个依赖项。 支持 IE >...
"AboutProperty"项目提供了一种简洁的方法来获取对象的属性列表、键值对以及类的继承层次结构(superclass列表)。这个工具对于理解和调试代码,特别是在处理复杂类继承结构时,能够提供极大的便利。 首先,让我们...
iOS NSObject对象的本质、内存分配、ISA指针及superclass底层源码分析 iOS NSObject对象是iOS开发中最基本也是最重要的对象之一,我们在使用它时往往只是停留在会用的阶段,却没有深入了解过它的本质。今天我们就来...
The compiler provides us with a default constructor to the class having no arguments. Abstract classes We does not make a object of the abstract class. This class must be inherited. Unlike ...
在Java编程语言中,"The method of type must override a superclass method" 是一个常见的错误提示,它通常出现在子类试图重写父类方法时,但没有按照正确的格式进行。这个错误通常与多态性和继承概念有关,是理解...
本压缩包中的"superclass_注释相当全 关于超类化的一切问题这里都有答案_产生多个超类的实例.rar"包含了一个详细的超类化实例,将帮助你深入理解这一概念。 首先,超类化的基本思想是重用和扩展。当你创建一个新的...
System.out.println("in SuperClass.doSomething()"); } } class SubClass extends SuperClass { int x; SubClass() { super(); // 调用父类的构造方法 x = 5; // super()必须是子类构造器的第一条语句 ...
= null) { traverseSuperClasses(superClass); } // 在这里处理当前类的属性和方法 } ``` 在实际开发中,反射虽然强大,但也需谨慎使用,因为它可能导致安全问题,降低性能,并且使得代码难以理解和维护。在...
= null && superClass != Object.class) { jsonMap.putAll(objectToJson(superClass)); } return jsonMap.toString(); } private static void makeAccessible(Field field) { if (!field.isAccessible()) { ...
throw new IllegalArgumentException("No @ManyToOne annotation found for field: " + associationField); } } private Field getAssociationField(Class<?> clazz, String fieldName) { try { return clazz...
= null) { String className = superclass.getName(); System.out.println(className); subclass = superclass; superclass = subclass.getSuperclass(); } ``` 该循环会打印出类的整个继承链。 5. 检索实现...