首页 > 编程知识 正文

spring依赖注入时机,spring的两种注入方式

时间:2023-05-04 01:40:02 阅读:159864 作者:2579

依赖注入(Dependency Injection,DI )与控制的逆转意义相同,是从两个角度描述的相同概念。

如果一个JAVA实例需要另一个JAVA实例,则传统方法是调用者创建被调用者的实例。 例如,您曾使用new关键字获取被调用方的实例。 使用Spring框架时,调用方不再创建调用方的实例,而是由Spring容器创建。 这叫做控制逆转。

在创建调用方的实例时,Spring容器会自动将调用方所需的对象实例注入到调用方中。 这样,调用方就会通过Spring容器获取调用方的实例。 这称为依赖注入。

注入依赖主要有两种实现方式,分别是属性setter注入和结构方法注入。 具体介绍如下。

1 )属性设置注入

IoC容器使用setter方法注入到依赖的实例中。 可以通过调用无参数构造函数或无参数静态工厂方法实例化bean,然后调用该bean的setter方法来实现基于setter的DI。

创建人员服务界面

在springDemo01项目的com.mengma.ioc包下创建一个名为PersonService的接口。 此接口包含addPerson ()方法,如下所示:

package com.mengma.ioc; publicinterfacepersonservice { publicvoidaddperson (; } 2.创建接口实现类PersonServiceImpl

在com.mengma.ioc包下创建一个名为PersonServiceImpl的类,以实现PersonService接口,如下所示:

package com.mengma.ioc; publicclasspersonserviceimplimplementspersonservice//定义接口声明private PersonDao personDao;//提供依赖于注入publicvoidsetpersondao (person Dao )的set ) )方法) { this.personDao=personDao; 如何实现人员服务接口@Override public void addPerson () { personDao.add; 调用PersonDao的add (方法system.out.println ) (' addPerson ) )执行的…' ); }在上面的代码中,首先声明了personDao对象,并在其中添加了用于依赖注入的setter方法。 然后调用personDao接口的addPerson (实现方法,并在方法中为save )方法输出语句。

将配置信息添加到applicationContext.xml

将实例化PersonServiceImpl类的bean元素添加到applicationContext.xml配置文件中,然后将personDao的实例注入personService中,如下所示:

bean id=' person service ' class=' com.Meng ma.IOC.personserviceimpl '! 将人员Dao实例注入人员服务实例--property name='人员Dao ' ref='人员Dao '//bean4.创建测试方法

在FirstTest类中创建一个名为test2()的方法。 编辑后如下。

publicvoidtest2((//spring定义配置文件的路径string XML path=' application context.XML ' ); 初始化Spring容器,并配置文件applicationcontextapplicationcontext=newclasspathxmlapplicationcontext (XML path ); //容器中的人员服务实例人员服务=(人员服务)应用程序上下文. get bean (人员服务' ); 人员服务的添加人员(方法人员服务. add人员); )2)结构方法注入

是指IoC容器使用结构方法被依赖的例子。 基于构造函数的DI是通过调用带参数的构造方法实现的,每个参数都表示依赖关系。

2.1创建接口实现类PersonServiceImpl

package com.mengma.ioc; publicclasspersonserviceimplimplementspersonservice//定义接口声明private PersonDao personDao; 提供依赖于注入//publicpersonserviceimpl (persondaopersondao )的带参数的构造函数({ this.personDao=personDao; 如何实现人员服务接口@Override public void addPerson () { personDao.add; 调用PersonDao的add (方法system.out.println ) (' addPerson ) )执行的…' ); } 3.1将配置信息添加到application context.XML

bean id=' person service ' class=' com.Meng ma.IOC.personserviceimpl '! 将人员Dao实例注入人员服务实例--constructor-arg ref='人员Dao '/bean3)接口注入

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。