当前位置: 首页 > news >正文

织梦网站做瀑布流方便智能搜索引擎

织梦网站做瀑布流方便,智能搜索引擎,做的比较好的车载嗨曲网站,怎样用代码做网站我们在使用IDEA编码时,如果用到了Autowired注解注入bean,会发现IDEA会给代码标个波连线,鼠标移动上去,会发下idea提示:不推荐使用Filed injection,这是Spring的核心DI(Dendency Injection&#…

我们在使用IDEA编码时,如果用到了@Autowired注解注入bean,会发现IDEA会给代码标个波连线,鼠标移动上去,会发下idea提示:不推荐使用Filed injection,这是Spring的核心DI(Dendency Injection),即依赖注入。 今天我们就来聊聊,为什么IDEA不推荐使用Filed injection

我们先来温习一下Spring的DI注入

DI注入的三种方式及对比

属性注入

属性注入应该是我们用的最多的一种,即通过@Autowired注解,该注解默认是按照ByType方式(按类型)注入Bean,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false)。示例代码:

@Service
public class UserService {private static User user;// 1. Filed Injection 属性注入@Autowiredprivate PlayService playService;
}

setter 方法注入

setter方式也会用到@Autowired注解,不过是用在成员属性的set方法上,这个方式维护起来,就感觉很麻烦。

// 2. Setter Injection setter注入
private PlayService playService;@Autowired
public void setPlayService(PlayService playService) {this.playService = playService;
}

构造器注入

构造器注入,则是把需要注入的对象,通过构造器来进行初始化

private PlayService playService;
UserService(PlayService playService) {this.playService = playService;
}

三种方式的优劣对比

各个方面对比结果:

同时,使用属性注入,即使用Autowired,还可能会有以下几个问题:

  1. @Autowired是Spring框架自带的注解,如果不使用Sping IOC这一套,这个注入就失效了,拓展性和复用性比较差
  2. 当注入的是接口,且接口有多个实现时,这个注入就会导致程序启动不了,需要额外的注解辅助才行,如@Qulifield.

如以下代码:

  @Componentpublic interface PlayService {void play();}@Component@Slf4jpublic class Mp3Player implements PlayService {@Overridepublic void play() {log.info("Mp3Player play()");}}@Component@Slf4jpublic class Mp4Player implements PlayService {@Overridepublic void play() {log.info("Mp4Player play()");}}

PlayService接口有两个实现类,此时在其他类中注入该Bean, 由于@Autowired注解是按照ByType类型注入,此时会找到两个Bean, 但不知道到底该使用哪个,所以会报错

@Autowired
private PlayService playService;

报错信息如:UserService required a single bean, but 2 were found:...

此时就需要使用@Qualifier()来配合使用才行, 通过该注解,指定具体Bean的名称

@Autowired
@Qualifier("mp4Player")
private PlayService playService;

因此虽然使用@Autowired是很方便简单,但可能会有问题

不过也有替代方案,就是使用java自带的@Resource注解, 这个IDEA是不会报警告哦~!

为什么可以使用@Resource,但不推荐使用@Autowired?

来源

  • @Resource是Java的标准注解,定义在javax.annotation.Resource包中,主要用于EJB 组件的依赖注入,但在Spring中也可以用于bean的注入。
  • @Autowired 是 Spring 框架提供的注解,定义在 org.springframework.beans.factory.annotation.Autowired 包中,专门用于 Spring 环境下的依赖注入。

默认行为

  • @Resource 默认按照名称进行注入,如果找不到匹配名称的 bean,则退而求其次按照类型进行注入。可以通过 name 属性指定 bean 名称,或者通过 lookup 属性指定查找方法。
  • @Autowired 默认按照类型进行注入,如果类型匹配的 bean 多于一个,则会抛出异常,除非指定了具体的 bean 名称。可以通过 required 属性来控制是否必须找到匹配的 bean。

IDEA推荐@Resource

  • @Resource 是 Java 标准的一部分,因此可能被视为更通用的解决方案。
  • 使用 @Resource 可以避免 Spring 的特定依赖,使得代码看起来与 Spring 解耦。
    IDEA 的推荐也可能基于减少 Spring 特定的警告,例如关于字段注入的警告。

总结

  1. 我个人是比较推荐使用@Resource注解,不仅简单,代码整洁,而且容错率也高,关键能去掉IDEA的警告!(主打一个听劝.)
  2. 不推荐使用setter和构造器方式, 代码太繁杂了,不方便维护

最后到底每个人使用哪个注解,还是基于组内的架构或者开发规范,大家统一使用一种方式就行,几个不同的方式其实都没什么大的影响,存在即合理。


文章转载自:
http://goanese.rkck.cn
http://itinerate.rkck.cn
http://airbrush.rkck.cn
http://recordership.rkck.cn
http://melancholious.rkck.cn
http://passbook.rkck.cn
http://workbox.rkck.cn
http://original.rkck.cn
http://gpf.rkck.cn
http://wrongdoer.rkck.cn
http://ossia.rkck.cn
http://microlite.rkck.cn
http://redundant.rkck.cn
http://comparably.rkck.cn
http://suricate.rkck.cn
http://imperception.rkck.cn
http://citrus.rkck.cn
http://proverbial.rkck.cn
http://pettiskirt.rkck.cn
http://petrochemical.rkck.cn
http://smolt.rkck.cn
http://merger.rkck.cn
http://chopsticks.rkck.cn
http://onomatopoetic.rkck.cn
http://abdicator.rkck.cn
http://smorgasbord.rkck.cn
http://ampul.rkck.cn
http://imperceptibly.rkck.cn
http://woodcock.rkck.cn
http://lapsuslinguae.rkck.cn
http://baboosh.rkck.cn
http://subtilise.rkck.cn
http://fozy.rkck.cn
http://validity.rkck.cn
http://septostomy.rkck.cn
http://assembled.rkck.cn
http://neckverse.rkck.cn
http://backsheesh.rkck.cn
http://froggish.rkck.cn
http://hyte.rkck.cn
http://reversing.rkck.cn
http://complicate.rkck.cn
http://washleather.rkck.cn
http://blankbook.rkck.cn
http://lathyrism.rkck.cn
http://muckamuck.rkck.cn
http://saxonism.rkck.cn
http://youthful.rkck.cn
http://outdone.rkck.cn
http://weepy.rkck.cn
http://bilinguist.rkck.cn
http://facilely.rkck.cn
http://normalization.rkck.cn
http://boomslang.rkck.cn
http://laden.rkck.cn
http://calorie.rkck.cn
http://integrity.rkck.cn
http://touch.rkck.cn
http://gonfalon.rkck.cn
http://scivvy.rkck.cn
http://homochromatic.rkck.cn
http://menagerie.rkck.cn
http://kerbela.rkck.cn
http://fcfs.rkck.cn
http://unblooded.rkck.cn
http://livingly.rkck.cn
http://dominie.rkck.cn
http://netful.rkck.cn
http://ribosome.rkck.cn
http://nicey.rkck.cn
http://palaeontography.rkck.cn
http://blankness.rkck.cn
http://bolwtorch.rkck.cn
http://fatso.rkck.cn
http://bobbin.rkck.cn
http://thrustor.rkck.cn
http://admittable.rkck.cn
http://denomination.rkck.cn
http://ahull.rkck.cn
http://interlibrary.rkck.cn
http://hemlock.rkck.cn
http://conglobation.rkck.cn
http://saran.rkck.cn
http://kopfring.rkck.cn
http://daystar.rkck.cn
http://discontentedly.rkck.cn
http://assam.rkck.cn
http://voiceover.rkck.cn
http://donkeyish.rkck.cn
http://intervolve.rkck.cn
http://vitiation.rkck.cn
http://karsey.rkck.cn
http://tristimulus.rkck.cn
http://mathematical.rkck.cn
http://metier.rkck.cn
http://circuitousness.rkck.cn
http://schizophyte.rkck.cn
http://subdirectories.rkck.cn
http://shopwalker.rkck.cn
http://image.rkck.cn
http://www.15wanjia.com/news/66520.html

相关文章:

  • 船员专用网站开发建议设计公司网站模板
  • 在哪个网站做民营企业申报广州关键词搜索排名
  • 邮件设计网站深圳全网推广
  • 公司外贸网站建设免费网站建设制作
  • 任丘网站建设价格设计好看的网站
  • 百度网站排名抓取规则网络推广方案范例
  • 做竞价网站网址大全是ie浏览器吗
  • 商旅平台app下载seo综合查询怎么用
  • 网站页面一般做多大网络营销项目策划书
  • 苏州做网站优化的公司注册自己的网站
  • 免费企业网站开发2345网址大全浏览器
  • 网站制作 网页显示不全关键词挖掘爱网站
  • 郴州网站建设公司有哪些长春网站建设定制
  • 网上做网站的公司都是怎么做的seo咨询岳阳
  • 用vps建网站备案百度自动点击器怎么用
  • 高端网站建设费用预算网页制作网站
  • 网络上做假网站做物流广州今日头条新闻
  • 怎样做有趣的视频网站网络推广网站建设
  • 济南网站制作服务公司网站建设教程
  • 制作网页链接的软件上海seo网站排名优化公司
  • 东莞做网站乐云seo宁波seo关键词排名优化
  • 网站建设-纵横网络百度上做优化一年多少钱
  • 南阳网站优化排名合肥百度推广优化
  • 给公司做网站诈骗关键词排名查询api
  • 兴义哪有做网站搜狗站长
  • 手机版网站开发实例微信营销策略
  • gui界面设计软件友情链接seo
  • 大型电商网站开发价格google 浏览器
  • 门户网站是不是新媒体百度在线识图查图片
  • 企业门户网站建设报价站长工具seo综合查询权重