×

spring依赖注入的三种方式 spring依赖注入的三种方式 注解

前端技术网 前端技术网 发表于2024-01-14 01:07:24 浏览2019 评论0

抢沙发发表评论

一、java反射与依赖注入的关系

事实上Spring的依赖注入就是采用反射机制的。反射是指程序可以访问、检测和修改它本身状态或行为的一种能力。对于Java来说,就是在运行状态中,查询这个类、对象的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法、修改它的属性。而所谓的依赖注入就是指在运行时(不是编译时)改变对象的属性或者调用对象的构造方法。

二、spring注入 优点

1.属性注入

spring依赖注入的三种方式 spring依赖注入的三种方式 注解

优点

简单,便于添加新的依赖,项目中使用最多(然而是Spring官方不推荐的方式)

减少大量冗余代码

新增依赖时不需要修改过多代码

2.构造器注入

优点

spring依赖注入的三种方式 spring依赖注入的三种方式 注解

依赖不可变:可以使用final关键字来修饰依赖字段

依赖不为空:允许构造函数可以保证一些重要属性在Bean实例化时就设置好

单一职责原则:当使用构造函数注入时,如果参数过多可能会促使你主动对类进行拆分

完全初始化的状态:保证返回客户端的代码是完全初始化的状态

更好的封装类变量:不需要为每个属性指定Setter方法,避免外部错误的调用

更利于单元测试:其它两种方式注入,进行单元测试时需要初始化整个Spring的环境

避免循环依赖:若存在循环依赖则启动会抛异常

3.Setter方法注入

优点

注入属性过多时,使用Setter方法更轻便

方便在类实例化之后重新对该属性进行配置或注入

三、依赖注入的三种方式优缺点

1.构造方法注入:

优点:

?在构造方法中体现出对其他类的依赖,一眼就能看出这个类需要其他那些类才能工作。

脱离了IOC框架,这个类仍然可以工作,POJO的概念。

一旦对象初始化成功了,这个对象的状态肯定是正确的。

缺点:

·构造函数会有很多参数(Bad**ell)。?有些类是需要默认构造函数的,比如MVC框架的Controller类,一旦使用构造函数注入,就无法使用默认构造函数。

?这个类里面的有些方法并不需要用到这些依赖(Bad**ell)。

2.Set方法注入:

优点:

·在对象的整个生命周期内,可以随时动态的改变依赖。

·非常灵活。

缺点:

·对象在创建后,被设置依赖对象之前这段时间状态是不对的。

·不直观,无法清晰地表示哪些属性是必须的。

3.方法参数注入

优点:

比较灵活。

缺点:

新加入依赖时会破坏原有的方法签名,如果这个方法已经被其他很多模块用到就很麻烦。

与构造方法注入一样,会有很多参数。

四、spring依赖注入有几种方式

Spring依赖注入有三种主要的方式:

1.构造函数注入(ConstructorInjection):通过构造函数来注入依赖。在类的构造函数中声明依赖的参数,Spring容器会根据参数类型自动注入相应的依赖。

2.Setter方法注入(SetterInjection):通过setter方法来注入依赖。在类中定义相应的setter方法,并在配置文件中通过<property>标签来设置依赖的值。

3.接口注入(InterfaceInjection):通过接口来注入依赖。在类中定义一个接口,并在配置文件中通过<property>标签来设置依赖的值。然后,类实现该接口,并在类中实现接口的方法。

除了这三种主要的方式,Spring还提供了其他一些注入方式,如字段注入(FieldInjection)和注解注入(AnnotationInjection)。字段注入是通过在类的字段上使用@Autowired或@Inject注解来实现的,而注解注入是通过在类或字段上使用自定义的注解来实现的。这些方式都可以根据具体的需求和场景来选择使用。

感谢您花时间阅读本文!我们希望通过对spring依赖注入的三种方式和spring依赖注入的三种方式 注解的问题进行探讨,为您提供了一些有用的见解和解决方案。如果您需要更多帮助或者有其他疑问,请不要犹豫与我们联系。