zoukankan      html  css  js  c++  java
  • 为什么自动注入写的是接口名

    来自某程序员一个问答问题:

    1. 有一点没明白,为什么注解@repository注解的是接口UserDAO的实现类UserDAOImpl,而在UserServiceImpl中使用@Autowired注解注入属性private UserDAO  userDAO自动装配,为什么最后得到的是UserDAOImpl的实例。

    -----上面是某位同学的提问,我也有这样的疑问----

    2. @Service注解服务层的时候,在unitest中,是从ApplicationContext.getBean("实现类名字,首字母小写") 这样获取的。

    也就是说,在容器中初始化的Bean应该按照实现类名字规则。 这一点如果是用xml配置是不存在这样的问题,因为xml可以指定id, id 是接口,class指向实现类。

    3. 来自网友的回答 :这个其实是创建了实现类的对象但引用了接口类型,即"InjectionDao injectionDao = new InjectionDaoImpl()", 这个其实是Java多态性(向上转型)的一种应用。在实现类处加@Repository注解,意思就是new InjectionDaoImpl(), 而在InjectionServiceImpl中定义属性InjectionDAO injectionDAO就是将new出来的这个InjectionDaoImpl对象向上转型为InjectionDao类型。

  • 相关阅读:
    nohup 运行后台程序
    配置了yum本地源
    rhel 6.7 离线安装docker
    java timer 执行任务
    遇到的sql关键字
    mysql事务和锁
    Mysql命令大全
    mysql keepalived
    mysql主从复制
    mysql从binlog恢复数据
  • 原文地址:https://www.cnblogs.com/kisshappyboy/p/12045612.html
Copyright © 2011-2022 走看看