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

苏州市住房和城乡建设局网站地震局17网一起做网店潮汕池尾

苏州市住房和城乡建设局网站地震局,17网一起做网店潮汕池尾,wordpress投稿插件 汉化,快速提高关键词排名的软件问题原因 关于这个问题,其实答案相对统一,实际上用大白话说起来也容易理解。 初始化问题 先看一下Java初始化类的顺序:父类的静态字段 > 父类静态代码块 > 子类静态字段 > 子类静态代码块 > 父类成员变量 > 父类构造代码块 &…

问题原因

关于这个问题,其实答案相对统一,实际上用大白话说起来也容易理解。

  1. 初始化问题

    先看一下Java初始化类的顺序:父类的静态字段 > 父类静态代码块 > 子类静态字段 > 子类静态代码块 > 父类成员变量 > 父类构造代码块 > 父类构造器 > 子类成员变量 > 子类构造代码块 > 子类构造器。

而Autowired注入,则要排队到子类构造器以后了,SpringIOC并不会对依赖的bean是否为null做判断,JVM编译时同样也不会有问题,但如果使用不当,运行起来时或许会因为出现空指针异常

  1. 对IOC容易依赖过强

    @Autowired由Spring提供,而@Resource是JSR-250提供的,它是Java标准。前者会警告,而后者不警告,就是因为前者导致了应用与框架的强绑定,若是换成其他IOC框架,则不能够成功注入了。其实对于这方面,我认为在大多数情况时是不会有什么问题的。

  2. 其他方面

    我看到网络上有一些其他方面的总结,比如:依赖过多却不够明显,违反了单一职责原则不能像构造器那样注入不可变的对象等,这类问题需要结合个人实际开发进行判断。

对于@Autowired使用方面,它虽然是将业务代码和框架进行了强绑定,但字段注入确实大幅简化了代码。追求完完全全的松耦合其实也过于理想化,应该在实际使用中追求平衡,否则将为了过度追求松耦合而得不偿失



其他使用方式

除了使用@Autowired以外,我们其实也有几种好用的方式。使用@Resource替代@Autiwired方法是其中一种,只需要改变一个注解,这里就不展示了。

  1. set方法
@RestController
public class TestController2 {ITestService testService;/** 基于set注入* */@Autowiredpublic void setTestService(ITestService iTestService) {this.testService = iTestService;}@GetMapping("/status2")public Result<?> status() {return testService.status();}
}

这种方法也使用了@Autowired注解,但是它是作用于成员变量的Setter函数上,而不是像Fied注入一样作用于成员变量上。


  1. 构造器
@RestController
public class TestController1 {ITestService testService;/** 基于构造方法的注入* */public TestController1(ITestService iTestService) {this.testService = iTestService;}@GetMapping("/status1")public Result<?> status() {return testService.status();}
}

它的好处在于,采用了构造方法注入,这种方式对对象创建的顺序会有要求,它将避免循环依赖问题。是最可靠的方法。


  1. 构造器的简化版(推荐)
    首先,需要引入lombok依赖。
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.2</version>
</dependency>

随后,我们在创建时就可以使用@RequiredArgsConstructor注解,它将帮我们创建构造器,final关键字必不可少

@RestController
@RequiredArgsConstructor
public class TestController3 {/** 用@RequiredArgsConstructor注解,这个使用方式也可以应用于service层* */private final ITestService testService;@GetMapping("/status3")public Result<?> status() {return testService.status();}
}

我们在使用这些创建方法时,都可以调出IDEA的结构(Structure)面板进行查看,如下图所示。

在这里插入图片描述
可以看到,在这个类中,已经存在我们所需要注入的内容。

在网上有博主总结了一张表,但因为到处能看到,不知原来出处是哪里。

注入方式可靠性可维护性灵活性循环关系检测性能
Field注入不可靠灵活不检测启动快
构造方法可靠不灵活检测启动慢
set方法不可靠灵活不检测启动快


总结

在使用中,使用构造方法是比较可行的,加上lombok,其实也可以到达非常简便。

http://www.yayakq.cn/news/617914/

相关文章:

  • 慕课网电子商务网站开发网站html静态化
  • wordpress主题贝宝兰州网站优化推广
  • 做网站开发多少钱风景旅游网站建设的设计思路
  • 网站建设网站备案所需资料怎么做刷业务网站
  • 平面设计师如何做网站东营建设信息网官网首页
  • 室内设计知名网站吉林省公司注册网站
  • 关于网站建设的入门书搭建合作平台
  • 在线快速建站网站没有百度权重
  • 正规网站建设服务广西网站建设方案
  • 华亚快印网站开发泊头网站建设公司
  • 织梦源码网站建设好了后登录不了贵阳网站建设
  • 东莞专业微网站建设推广权重域名做网站有用么
  • 北京完美建设有限公司网站工信部网站备案方法
  • 网站的宣传推广wordpress怎么防止攻击
  • 服装企业网站源码一个静态网站多少钱
  • 英文企业网站带后台有数据库动漫制作专业在广西哪所院校最强
  • 网站制作多少钱公司自己的网站怎么做网盘
  • 做当地门户网站多少钱三元里网站建设
  • 如何在阿里云上建设网站霸州放心的网络建站
  • 如何申请个人网站域名石河子做网站
  • 网站宽度 像素做美食网站的图片素材
  • 小米网站设计wordpress简约主题下载
  • 丹东手机网站宿迁建设局网站拆除备案
  • 举报网站建设情况 汇报立陶宛与俄罗斯最新消息
  • 网站建设公司赚钱吗wordpress淘客主题
  • 哪些企业会考虑做网站商标设计软件免费版
  • 王者荣耀网站开发目的网站模版 拓
  • 湖北建设部网站官网自己做购物网站需要什么
  • 广东做网站的公司昆明网站建站公司
  • 林州网站建设哪家专业咨询行业网站开发