properties canal安装 深度图像 binding db2 jaxb chartjs tinymce Semantic UI Way.js vue代码规范 jquery触发change事件 matlab停止运行命令 oracle数据库版本 html下拉框默认选中 idea格式化代码设置 mysql配置远程连接 python开发环境 python模块下载 java中的抽象类 java中float java语言是什么 javahttp linux硬盘 html实例教程 运行时错误1004 亚索刀光特效包 adobe清理工具 字幕提取 页面刷新 maven项目打包 kz文件 pp安卓助手 服务器下载 iphone组装机 cdr群组快捷键 smtp邮件服务器 ps证件照片处理教程 角标怎么打 cgi备份还原
当前位置: 首页 > 学习教程  > 编程语言

Spring的IOC中DI依赖注入自动装配注解方式@Autowired和@Resource的区别

2020/10/8 19:21:31 文章标签:

Autowired为Spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired。Autowired采取的策略为按照类型注入。public class UserService {Autowiredprivate UserDao userDao; } 如上代码所示,这样装配回去spring容器中找到类…

@Autowired为Spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired。

@Autowired采取的策略为按照类型注入。

public class UserService {
    @Autowired
    private UserDao userDao; 
}
如上代码所示,这样装配回去spring容器中找到类型为UserDao的类,然后将其注入进来。这样会产生一个问题,当一个类型有多个bean值的时
候,会造成无法选择具体注入哪一个的情况,这个时候我们需要配合着@Qualifier使用。

@Qualifier告诉spring具体去装配哪个对象。

public class UserService {
    @Autowired
    @Qualifier(name="userDao1")    
    private UserDao userDao; 
}
这个时候我们就可以通过类型和名称定位到我们想注入的对象。
@Resource注解由J2EE提供,需要导入包javax.annotation.Resource。

@Resource默认按照ByName自动注入。

public class UserService {
    @Resource  
    private UserDao userDao; 
    @Resource(name="studentDao")  
    private StudentDao studentDao; 
    @Resource(type="TeacherDao")  
    private TeacherDao teacherDao; 
    @Resource(name="manDao",type="ManDao")  
    private ManDao manDao; 
}    
①如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常。

②如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常。

③如果指定了type,则从上下文中找到类似匹配的唯一bean进行装配,找不到或是找到多个,都会抛出异常。

④如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则
自动装配。

本文链接: http://www.dtmao.cc/news_show_250147.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?