spring中`@Service(value=“XXX“)`中XXX的作用

@Service的作用

    spring中有很多注解帮助我们开发,@Repository、@Service 、@Controller 和@Component注解在类上面即可以使spring自动向Bean容器中创建该类的Bean,而在我们需要用到该Bean来创建对象时,在变量声明上方添加@AutoWired或者@Qualifier即可。

@Service(value="XXX")中的XXX的作用

    @service注解工作原理:在service层类上面添加@Service注解,会自动创建BeanBean的名字为类的名字首字母小写,也可以自己指定名字@Service(value="XXXX"),这个名字或者说Bean的名字有什么用呢?是为了使用名字进行属性注入时使用的。
    对象属性注入:如果是使用类来创建对象,使用数据类型注入方式AutoWired属性注入就直接生成一个对象,因为一个类时唯一的。当使用接口创建对象时,使用@AutoWired它会去找该数据类型接口的实现类来创建对象。但是当该接口有多个实现类时,该怎么办,这时就需要加上通过名字进行注入属性了,通过什么名字呢,即Bean的名字,这时候上面的@Service(value="XXX")里面的 XXX 就用到了,使用@Qualifier("XXX")来指定特定的类来进行属性注入。
    这就是@Servicevalue作用

//UserDao类
//Repository是使用注解让spring扫描到该类,并创建bean
@Repository
public class UserDaoImpl implements UserDao {
    @Override
    public void add() {
        System.out.println("UserDaoImpl.add........");
    }
}

@Repository
public class UserDaoImpl2 implements UserDao {
    @Override
    public void add() {
        System.out.println("UserDaoImpl2.add........");
    }
}

//UserServer类
@Service
public class UserServer {
    //当UserDao类只有一个时,只使用AutoWired可以进行注入,但是有两个该变量类型的对象时就会报错
    //所以一般变量类型和变量名注入一起使用更加准确
    @Autowired
    @Qualifier("userDaoImpl2")
    //@Resource Resource使用类型注入
    //@Resource(name="userDaoImpl2")  Resource使用名字注入
    UserDao userDao; 
    
    //为普通类型注入属性
    @Value(value="abc")
    String name;

    public void add(){
        System.out.println("userServer.add........");
        userDao.add();
    }
}
  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值