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

各大网站投稿方式wordpress 网站的占有

各大网站投稿方式,wordpress 网站的占有,做网站app要注册哪类商标,wordpress设置树形文章目录Springboot依赖注入Bean的方式一、Field 注入/属性注入二、set注入三、构造器注入Springboot依赖注入Bean的方式 一、Field 注入/属性注入 Autowired注解的一大使用场景就是Field Injection。 Controller public class UserController {Autowiredprivate UserServic…

文章目录

  • Springboot依赖注入Bean的方式
    • 一、Field 注入/属性注入
    • 二、set注入
    • 三、构造器注入

Springboot依赖注入Bean的方式

一、Field 注入/属性注入

@Autowired注解的一大使用场景就是Field Injection。

@Controller
public class UserController {@Autowiredprivate UserService userService;}

通过Java的反射机制实现,所以private的成员也可以被注入具体的对象

优点

  1. 代码少,简洁明了。
  2. 新增依赖十分方便,不需要修改原有代码

缺点

  1. 容易出现空指针异常。Field 注入允许构建对象实例时依赖的对象为空,导致空指针异常不能在启动时就爆出来,只能在用到它时才发现。
    空指针异常不是必现的,与bean的实例化顺序有关。有时,把依赖的bean改个名字就会报空指针异常。
  2. 会出现循环依赖的隐患。

二、set注入

Setter Injection需要依赖@Autowired注解,使用方式与Field Injection有所不同,Field Injection时@Autowired是用在成员变量上,而Setter Injection的时候,@Autowired是用在成员变量的Setter函数上。

@Controller
public class UserController {private UserService userService;@Autowiredpublic void setUserService(UserService userService){this.userService = userService;}
}

通过调用成员变量的set方法来注入想要使用的依赖对象。

优点

  1. 注入参数多的时候比较方便。构造器注入参数太多了,显得很笨重
  2. 能让类在之后重新配置或者重新注入。

缺点

  1. 有一定风险。set注入是后初始化其依赖对象,如果一个对象在没有完全初始化就被外界使用是不安全的(尤其是在多线程场景下更加突出)。

三、构造器注入

Constructor Injection是构造器注入,是Springboot最为推荐的一种使用方式。

@Controller
public class UserController {private final UserService userService;public UserController(UserService userService){this.userService = userService;}}

注意:

  • 不能提供无参构造方法,否则Springboot默认会加载无参的构造方法,Bean实例对象会为null

  • Springboot官方建议使用final来修饰成员变量,然后通过构造方法来进行注入。原因:final修饰的成员变量是不能够被修改的;不加final虽然也能注入Bean,但是若被其他人修改为null,可能会导致不必要的问题,所以最好是加final。

通过对象构建的时候建立关系,这种方式对对象创建的顺序会有要求,当然Spring会为你搞定这样的先后顺序,除非你出现循环依赖,然后就会抛出异常。

Spring 4.x 的时候,Spring 官方在对比构造器注入和 Setter 注入时,推荐使用构造器注入方式:

优点

  1. 保证注入的组件不可变
  2. 确保需要的依赖不为空
  3. 解决循环依赖的问题(若有循环依赖会在项目启动时抛错)

能够保证注入的组件不可变,并且确保需要的依赖不为空。此外,构造器注入的依赖总是能够在返回客户端(组件)代码的时候保证完全初始化的状态。

若手工写构造方法觉得麻烦,也可以使用lombok中的@RequiredArgsConstructor

@RequiredArgsConstructor
public class VerifyController {private final UserService userService;private final StudentService studentService;
}

@RequiredArgsConstructor
@RequiredArgsConstructor 注解是针对标有 @NonNull 注解的变量和 final 变量进行参数的构造方法。

构造器注入的原理可参考:《https://blog.csdn.net/sihai12345/article/details/101951348》

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

相关文章:

  • 牡丹江seo网站推广蜘蛛屯优化排名吴江网站制作公司
  • 有没有做西餐的视频网站烟台网站建设seo
  • 做外贸网站好的公司手游传奇发布网站
  • 石家庄个人做网站网站备案重要吗
  • 如何做的网站手机可以用吗深圳高端设计公司
  • 遂宁移动端网站建设htnl5 做的视频网站
  • 永川网站建设熊掌号做的网站怎样百度能搜到
  • 360搜索联盟网站制作seo软件简单易排名稳定
  • 网站可做2个首页吗做网站的公司济南赛博科技市场
  • 网站改版会降权吗没有网站没有推广如何做外贸
  • 怎么建立一个网站开展业务图案设计
  • jsp怎么做网站wordpress 企业网站主题
  • 影视网站建设策划文案wordpress 卸载主题
  • 如何做公司网站重庆网站建设夹夹虫
  • 建设有一个网站需要什么注册新公司需要准备的材料
  • 福州网站建设服务武昌做网站多少钱
  • 苏州企业网站设计方案优化公司结构
  • 域名抢注网站建设平面设计基础教程
  • 主机屋建网站源码山东省建设工程招标投标信息网
  • 网站建设公司兴田德润专业wordpress 修改上传文件大小
  • 三合一网站包含什么外汇交易网站建设
  • 网站建设百度云资源建设营销网站多少钱
  • 做视频网站需要流媒体吗福建龙祥建设集团公司网站
  • 网站制作app软件微信公众号手机怎么登录
  • 鄂州官方网站防水自己如何建设网站
  • 西安大型网站开发深圳 骏域网站建设
  • 建设企业网站下载太原网站建设平台
  • 深圳企业学校网站建设陕西有没有做网站普查公司
  • 南昌企业做网站wordpress cdn推荐
  • 谁给个好网站机械零部件加工网