博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
杂七杂八荟萃
阅读量:6431 次
发布时间:2019-06-23

本文共 1278 字,大约阅读时间需要 4 分钟。

  hot3.png

===========@Autowired与@Resource比较===========

今天在spring注入的时候用到了

@Autowired@Qualifier("userServiceImp")private  UserService userService;

后面我的导师提出了为什么不用@Resource替换上面的代码进行装配呢?

好,那么问题就来了:

为什么一定要用@Resource呢?@Resource有什么好呢?

现在我们比较下两者的区别,在做定论。

相同点:

@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。

不同点:

@Autowired:

@Autowired默认按类型装配(这个注解是专属spring的),默认情况下必须要求依赖对象必须存在,

如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) ,

如果我们想使用名称装配可以结合@Qualifier注解进行使用,如前面所提到的:

@Autowired@Qualifier("userServiceImp")private  UserService userService;

@Resource

@Resource(这个注解属于J2EE的),默认安装名称进行装配,名称可以通过name属性进行指定,

如果没有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找,

如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。

如果name属性一旦指定,就只会按照名称进行装配。如下:

@Resource(name = "userServiceImp")private  UserService userService;

最后我们推荐使用@Resource:

@Resource注解在字段上,这样就不用写setter方法了,并且这个注解是属于J2EE的,减少了与spring的耦合。

===========Exception、RuntimeException、Error===========

异常分为两种:一种是运行时异常(看RuntimeException单词即可知道其意思),另一种是受检查时异常(Exception)

RuntimeException:java编译器不去检查,即便是出现这种异常,在编译时也不会抛出。如:1/0这种情况;运行时异常是可以通过try……catch捕获的,捕获后亦可进行相应的处理操作。

Exception:受检查异常如果没有try……catch也没有throws抛出,编译是通不过的

Error运行时错误,通常是由Java虚拟机抛出的,如OutOfMemoryError,其和运行时异常的相同之处是:Java编译器不去检查他们,当程序运行时出现它们都会终止运行。

转载于:https://my.oschina.net/nyp/blog/382314

你可能感兴趣的文章
Intel 揭秘:如何在公有云、混合云和私有云间合理放置工作负载
查看>>
借力AI 极验如何构建下一代业务安全?
查看>>
用Python制作迷宫GIF
查看>>
支付宝推出基于区块链跨境支付,巨头入场小企业将面临灭顶之灾
查看>>
从事互联网行业,怎样才能快速掌握一门编程语言呢?
查看>>
谈谈fail-fast与fail-safe是什么以及工作机制
查看>>
深入浅出换肤相关技术以及如何实现
查看>>
Redis 基础、高级特性与性能调优
查看>>
React native 第三方组件 React native swiper
查看>>
接口幂等设计
查看>>
编程入门指南
查看>>
移动端的自适应方案—REM
查看>>
你真的懂volatile吗
查看>>
Android 编译时注解-提升
查看>>
说说 Spring AOP 中 @Aspect 的高级用法
查看>>
Workbox CLI中文版
查看>>
贝聊亿级数据库分库分表实践
查看>>
同时连接gitlab和github
查看>>
vuex源码分析
查看>>
tornado+datatables分页
查看>>