Struts2 +Spring 3.0+hibernate 3.3 注解异常.expected at least 1 b

Struts2 +Spring 3.0+hibernate 3.3 注解异常.expected at least 1 bean which qualifies as autowir
我用注解来实现的SSH,用@Entity 来标示实体bean,用 来让Spring 来注入,可以在service里面用@Autowiredx05
x05@Qualifier("taUser")
x05TaUser taUser;
来使用这个实体bean的时候就报下面这个错,说找不到,貌似Spring没注入耶.再次万谢各位帮忙解决下(据说是 3.0和3.3 jar 冲突,但是我不知道那个有冲突啊).
Unable to instantiate Action,com.ta.action.UserCreateAction,defined for 'user-create' in namespace '/'Error creating bean with name 'com.ta.action.UserCreateAction':Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException:Could not autowire field:com.ta.service.UserServices com.ta.action.UserCreateAction.userServices; nested exception is org.springframework.beans.factory.BeanCreationException:Error creating bean with name 'userServicesImpl':Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException:Could not autowire field:com.ta.entity.model.TaUser com.ta.service.impl.UserServicesImpl.taUser; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException:No matching bean of type [com.ta.entity.model.TaUser] 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),@org.springframework.beans.factory.annotation.Qualifier(value=taUser)}
x05com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:318)
x05com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:399)
cmj5555 1年前 已收到2个回答 举报

haiou13141985 幼苗

共回答了16个问题采纳率:93.8% 举报

你这种写法,Spring根本就不知道你要注入那个实体,再说了,你也没有使用自动装配,要是你是Spring的话,你知道别人想要你注入什么东西?

1年前 追问

5

cmj5555 举报

说到重点了,那你能不能给说说我怎么去告诉spring 注入呢? 我不是用了 JPA的@Entity 注解了嘛?难道对于实体bean的注入还要用到spring的什么注解嘛? 还望兄台不吝赐教

举报 haiou13141985

不敢!Spring注入方式有多种 第一:显示注入,就像你写的代码一样,比如你实体类中有个PackagesToScan的类,而有一个实体类User中引用了PackagesToScan,要注入的话应该写成 这样写的话,Spring就会知道你是想把com.ta.entity.PackagesToScan注入给com.ta.entity.User使用,其中ref指定你引用bean的ID名,等同于 第二:自动装备 Autowired(byname/byType) 如上例可写成: 这样写的话,只要你的实体User中创建的实体类的对象名为packagesToScan,那么,Spring将自动将com.ta.entity.PackagesToScan注入到User实体类中!同理byType就是类型相同也会自动注入 Spring注入只要你将类的位置明确指定,你这样写代表的是com.ta.entity包下任何一个类,没有明确指定到底是哪个类,所以会报错!!

cmj5555 举报

首先非常谢谢你的回答 不过, 这句话是spring2.5开始的新特性,目的就是 让spring 扫描 这个package下面的所有包含注解的实体类,并将其注入。这是资料上这么说的,我也看到了这样的实例。可是我这样注入就是在使用的时候说找不到。很明显就是这里没有注入。 所以现在问题就是,如果我还是 用 packagesToScan 。那我怎么用才能使用这个新特性呢?

august88 幼苗

共回答了1个问题 举报

多写几个属性:


1年前

0
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 18 q. 0.012 s. - webmaster@yulucn.com