2 w1033162186 w1033162186 于 2016.01.20 00:36 提问

关于spring的注解@Resource

@Service
public class UserServiceImpl implements UserService { } 这样写相当于在xml这样配置

<--bean id="userServiceImpl" class="com.aa.UserServiceImpl">

那如果我加一个@Resource注解在类中呢:
@Service
public class UserServiceImpl implements UserService {
@Resource()
private UserDao userDao;
}

如果我给resource指定了name属性比如name=“abc”,对应的xml文件是怎么样的
都不明白name属性指的是xml中bean的id 或者是其中的的name或是ref

希望知道的能说一下,谢谢!

4个回答

Evankaka
Evankaka   Ds   Rxr 2016.01.20 12:32
已采纳

@Service你如果不加name属性的话,默认就是类名,但是是以小写开头的。
@Resource()是默认按类名去查找并注入,当@Resource没有显式提供名字的时候,如果根据默认名字找不到对应的Spring管理对象,注入机制会回滚至类型匹配(type-match)。如果刚好只有一个Spring管理对象符合该依赖的类型,那么它会被注入。

w1033162186
w1033162186 指定abc的话 会有nosuchbean,大概知道了,谢谢
接近 2 年之前 回复
w1033162186
w1033162186 如提问所说,如果我没加Resource 的name属性(name=abc),他就能直接找到默认名为userDao的bean(此时是按name装配),但是如果加了name=abc,由于找不到id为abc这个bean,再按类型装配,实际上是跟@autowired这个注解一样的效果了?是这样吗
接近 2 年之前 回复
Evankaka
Evankaka 是的,你可以这样写。如果没找到名为userDao的bean,它还会去找UserDao及其子类的实现bean.这时就是按类型的了
接近 2 年之前 回复
w1033162186
w1033162186 即:bean id=“userDao”class="DaoImpl",,然后会在userServiceImpl 这个bean 里面这样吗<bean-id=serviceImpl class="..."> <-property name=abc ref=userDao> <bean>
接近 2 年之前 回复
w1033162186
w1033162186 就是说他会去找UserDao这个接口对应的实现bean(假设只有一个实现类)即:bean id=“uSER”
接近 2 年之前 回复
devmiao
devmiao   Ds   Rxr 2016.01.20 03:43
w1033162186
w1033162186 谢谢
接近 2 年之前 回复
Royal_lr
Royal_lr   Ds   Rxr 2016.01.20 09:46

name="abc",,对应得xml是 bean id=“abc” class="com.aa.UserServiceImpl"

w1033162186
w1033162186 这是name在service那里才是这样吧?我说的是@Resource这个的name,能说清楚点麽,不明白
接近 2 年之前 回复
xiaomoxn
xiaomoxn   2016.01.20 10:00

name属性对应的bean中的id,如果用注解的话,不用写配置文件,两者用其一即可。

w1033162186
w1033162186 我知道不用写,我就是想问问用Resouce注解了之后UserDao接口是怎样的形式存在的,一直不明白,不知道是不是这样,bean id=serviceImpl class="..." property name=abc ref=userDao bean 标签老被吞掉,我就不写了
接近 2 年之前 回复
w1033162186
w1033162186 我知道不用写,我就是想问问用Resouce注解了之后UserDao接口是怎样的形式存在的,一直不明白,不知道是不是这样,bean id=serviceImpl class="..." property name=abc ref=userDao bean 标签老被吞掉,我就不写了
接近 2 年之前 回复
w1033162186
w1033162186 我知道不用写,我就是想问问用Resouce注解了之后UserDao接口是怎样的形式存在的,一直不明白,<bean-id=serviceImpl class="..."> <-property name=abc ref=userDao> <bean>不知道是不是这样,
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!