注解的一个小问题,请大侠看一下啦

sunnyspring2006 2015-05-25 08:20:02
SSH框架 刚刚使用注解,
在action中
@Controller
@Scope("prototype")
public class RoleAction extends ActionSupport {
@Resource
private RoleSerivce roleSerivce; //RoleSerivce 是接口
在RoleServiceImpl(RoleSerivce接口的实现类)中:
@Service
@Transactional
public class RoleServiceImpl implements RoleSerivce {

请问
用Resource注解注入的时候,如果按默认名称注入,显然roleSerivce 和 roleServiceImpl 属性名称是不一样的,
只能按照属性名注入了 可是一个是 roleSerivce接口,一个是roleServiceImpl 实现类,根本不一样的类型,但是为什么就能注入上呢
求解,谢谢了

...全文
231 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
microhex 2015-05-27
  • 打赏
  • 举报
回复
java面向对象基本知识, Interface A = new InterfaceImpl() ; 没什么不可以的啊。。。。
豫让_______ 2015-05-27
  • 打赏
  • 举报
回复
@Resource(name = "borrowingServiceImpl")
    private BorrowingService borrowingService;
应该是这种吧,很好理解啊,注入实现类,但是以接口的方式定义。如6楼所讲。
  • 打赏
  • 举报
回复
@Resource装配顺序 1 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常 2 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常 3 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常 4 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配(见2);如果没有匹配,则回退为一个原始类型(UserDao)进行匹配,如果匹配则自动装配;
sunnyspring2006 2015-05-27
  • 打赏
  • 举报
回复
楼上和楼上上的两位仁兄说的我都明白 我这个业务层的@Service和控制层的@Resource既没有指定name,又没有指定type,他是怎么将实现类roleSerivceIMPL自动注入到roleSerivce接口中的(名字没有指定,自动生成的默认名字是不一样的,类型也不一样,一个是接口一个是实现类); 小弟这样打破砂锅问到底是不对的,可是不搞清楚很难受的啊。。。。。
sunnyspring2006 2015-05-26
  • 打赏
  • 举报
回复
“而注入的时候,父类的方法体都扫描进去了,这个时候roleServiceImpl 相当于已经在实现注入了的方法,就不需要再注入了” 楼上的大哥意思是roleServiceImpl 这个接口的实现类就不需要添加个@Service,不需要去在application.xml中注册这个bean了,可是这个代码明明是把service实现类注入到了service的接口中啊
sdl1314520 2015-05-26
  • 打赏
  • 举报
回复
RoleSerivce 相当于是他的父类,接口里定义的方法,roleServiceImpl 都要实现,而注入的时候,父类的方法体都扫描进去了,这个时候roleServiceImpl 相当于已经在实现注入了的方法,就不需要再注入了
sunnyspring2006 2015-05-26
  • 打赏
  • 举报
回复
好的 虽然我现在还不清楚为什么注入的时候接口和实现这个接口的实现类 类型不同(一个是接口 一个是实现类),依然可以用Resource注入 但是还是谢谢了 毕竟这么耐心的给我解答
sdl1314520 2015-05-26
  • 打赏
  • 举报
回复
当你需要定义某个类为一个bean,则在这个类的类名前一行使用@Service("XXX"),就相当于讲这个类定义为一个bean,bean名称为XXX; 当需要在某个类中定义一个属性,并且该属性是一个已存在的bean,要为该属性赋值或注入时在该属性上一行使用@Resource(name="xxx"),相当于为该属性注入一个名称为xxx的bean。 应该可以解决你的问题
微科技 2015-05-25
  • 打赏
  • 举报
回复
在set方法上注入

81,094

社区成员

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

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