No setter found for property 'target ' in class

xiaoqiang123 2008-04-16 12:43:37
小弟现在按书的一个例子,struts+spring+hibernate,在配置config.xml时,有下面一段代码,可是报错说:


<bean id="userDAOProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">///这里报错
<ref local="userDAO" />
</property>


No setter found for property 'target ' in class


我在网上找了一天,有三种说法,一是找不到setter方法,可是我在TransactionProxyFactoryBean包里发现有seter 方法的..

二是说没有spring-aop.jar,我加了也没有用,

三是说有冲突,但那个人没有说是哪个包冲突了..


请遇到过这问题的高手帮帮我,谢谢啊
...全文
1813 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wx6698 2011-04-21
  • 打赏
  • 举报
回复
二楼正解
  • 打赏
  • 举报
回复
学到东西了, 我碰到的问题和楼主的一样, 按照2楼的提示我就就该过来了。 我虽然写了get()/set()方法,但是名称不一样。修改过来就好了。 楼主可以注意一下大小写之类的地方。
老紫竹 2008-04-16
  • 打赏
  • 举报
回复
target?

private UserDAO target;
private void setTarget(UserDAO target){
this.target = target;
}
awusoft 2008-04-16
  • 打赏
  • 举报
回复
那就不清楚了哦.看看类名之类的,大小写都对了没有
xiaoqiang123 2008-04-16
  • 打赏
  • 举报
回复
楼上的朋友们,谢谢你们..但是,我用反编译TransactionProxyFactoryBean ,里面确定有setter.

userDAO也没有写错!

package org.springframework.transaction.interceptor;

import java.util.Properties;
import org.springframework.aop.Pointcut;
import org.springframework.aop.TargetSource;
import org.springframework.aop.framework.*;
import org.springframework.aop.framework.adapter.AdvisorAdapterRegistry;
import org.springframework.aop.framework.adapter.GlobalAdvisorAdapterRegistry;
import org.springframework.aop.support.AopUtils;
import org.springframework.aop.support.DefaultPointcutAdvisor;
import org.springframework.aop.target.SingletonTargetSource;
import org.springframework.beans.factory.*;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.util.ClassUtils;

// Referenced classes of package org.springframework.transaction.interceptor:
// TransactionInterceptor, TransactionAttributeSourceAdvisor, TransactionAttributeSource

public class TransactionProxyFactoryBean extends ProxyConfig
implements FactoryBean, BeanFactoryAware, InitializingBean
{

private final TransactionInterceptor transactionInterceptor = new TransactionInterceptor();
private Object target;
private Class proxyInterfaces[];
private Pointcut pointcut;
private Object preInterceptors[];
private Object postInterceptors[];
private AdvisorAdapterRegistry advisorAdapterRegistry;
private Object proxy;

public TransactionProxyFactoryBean()
{
advisorAdapterRegistry = GlobalAdvisorAdapterRegistry.getInstance();
}

public void setTransactionManager(PlatformTransactionManager transactionManager)
{
transactionInterceptor.setTransactionManager(transactionManager);
}

public void setTarget(Object target)
{
this.target = target;
}

public void setProxyInterfaces(String interfaceNames[])
throws ClassNotFoundException
{
proxyInterfaces = AopUtils.toInterfaceArray(interfaceNames);
}

public void setTransactionAttributes(Properties transactionAttributes)
{
transactionInterceptor.setTransactionAttributes(transactionAttributes);
}

public void setTransactionAttributeSource(TransactionAttributeSource transactionAttributeSource)
{
transactionInterceptor.setTransactionAttributeSource(transactionAttributeSource);
}

public void setPointcut(Pointcut pointcut)
{
this.pointcut = pointcut;
}

public void setPreInterceptors(Object preInterceptors[])
{
this.preInterceptors = preInterceptors;
}

public void setPostInterceptors(Object postInterceptors[])
{
this.postInterceptors = postInterceptors;
}

public void setAdvisorAdapterRegistry(AdvisorAdapterRegistry advisorAdapterRegistry)
{
this.advisorAdapterRegistry = advisorAdapterRegistry;
}

public void setBeanFactory(BeanFactory beanFactory)
{
if(transactionInterceptor.getTransactionManager() == null && (beanFactory instanceof ListableBeanFactory))
{
ListableBeanFactory lbf = (ListableBeanFactory)beanFactory;
PlatformTransactionManager ptm = (PlatformTransactionManager)BeanFactoryUtils.beanOfTypeIncludingAncestors(lbf, org.springframework.transaction.PlatformTransactionManager.class);
transactionInterceptor.setTransactionManager(ptm);
}
}

public void afterPropertiesSet()
{
transactionInterceptor.afterPropertiesSet();
if(target == null)
{
throw new IllegalArgumentException("'target' is required");
}
if(target instanceof String)
{
throw new IllegalArgumentException("'target' needs to be a bean reference, not a bean name as value");
}
ProxyFactory proxyFactory = new ProxyFactory();
if(preInterceptors != null)
{
for(int i = 0; i < preInterceptors.length; i++)
{
proxyFactory.addAdvisor(advisorAdapterRegistry.wrap(preInterceptors[i]));
}

}
if(pointcut != null)
{
org.springframework.aop.Advisor advice = new DefaultPointcutAdvisor(pointcut, transactionInterceptor);
proxyFactory.addAdvisor(advice);
} else
{
proxyFactory.addAdvisor(new TransactionAttributeSourceAdvisor(transactionInterceptor));
}
if(postInterceptors != null)
{
for(int i = 0; i < postInterceptors.length; i++)
{
proxyFactory.addAdvisor(advisorAdapterRegistry.wrap(postInterceptors[i]));
}

}
proxyFactory.copyFrom(this);
TargetSource targetSource = createTargetSource(target);
proxyFactory.setTargetSource(targetSource);
if(proxyInterfaces != null)
{
proxyFactory.setInterfaces(proxyInterfaces);
} else
if(!isProxyTargetClass())
{
proxyFactory.setInterfaces(ClassUtils.getAllInterfacesForClass(targetSource.getTargetClass()));
}
proxy = getProxy(proxyFactory);
}

protected TargetSource createTargetSource(Object target)
{
if(target instanceof TargetSource)
{
return (TargetSource)target;
} else
{
return new SingletonTargetSource(target);
}
}

protected Object getProxy(AopProxy aopProxy)
{
return aopProxy.getProxy();
}

public Object getObject()
{
return proxy;
}

public Class getObjectType()
{
if(proxy != null)
{
return proxy.getClass();
}
if(proxyInterfaces != null && proxyInterfaces.length == 1)
{
return proxyInterfaces[0];
}
if(target instanceof TargetSource)
{
return ((TargetSource)target).getTargetClass();
}
if(target != null)
{
return target.getClass();
} else
{
return null;
}
}

public boolean isSingleton()
{
return true;
}
}
KingNE 2008-04-16
  • 打赏
  • 举报
回复
org.springframework.transaction.interceptor.TransactionProxyFactoryBean
引入包的问题
具体你可以参照myEclipse中包的导入
evoloyeu 2008-04-16
  • 打赏
  • 举报
回复
4楼和3楼说的有道理哈
zzkk_1980 2008-04-16
  • 打赏
  • 举报
回复
其他的也贴出来看看
newjavamaker 2008-04-16
  • 打赏
  • 举报
回复
如果有setter方法,那么你看下里面有没有关于name="targer"的get()或set()方法,或者参数的名字不是target?
huahuamay 2008-04-16
  • 打赏
  • 举报
回复
我也遇到过这个问题 后来发现确实是缺少get set

TransactionProxyFactoryBean 这里面有userDAO的实例化吗
如果有 那么这个对象的setter和getter方法都有吗?
panxuan 2008-04-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 AWUSOFT 的回复:]
没有对应的getTarget()/setTarget(参数)方法
[/Quote]
ee4456 2008-04-16
  • 打赏
  • 举报
回复
就是没有setter方法。。。不是这个的TransactionProxyFactoryBean
awusoft 2008-04-16
  • 打赏
  • 举报
回复
没有对应的getTarget()/setTarget(参数)方法
nanjg 2008-04-16
  • 打赏
  • 举报
回复
userDAO 写的对么

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧