Spring的注入方式和依赖注入方式有什么区别

2022-03-18 文化 144阅读
Type1接口注入

我们常常借助接口来将调用者与实现者分离。如:

publicclassClassA{
privateInterfaceBclzB;
publicinit(){
Ojbectobj=
Class.forName(Config.BImplementation).newInstance();
clzB=(InterfaceB)obj;
}
……
}

上面的代码中,ClassA依赖于InterfaceB的实现,如何获得InterfaceB实现类的实例?传统的方法是在代码中创建InterfaceB实现类的实例,并将起赋予clzB。

而这样一来,ClassA在编译期即依赖于InterfaceB的实现。为了将调用者与实现者在编译期分离,于是有了上面的代码,我们根据预先在配置文件中设定的实现类的类名,动态加载实现类,并通过InterfaceB强制转型后为ClassA所用。

这就是接口注入的一个最原始的雏形。

而对于一个Type1型IOC容器而言,加载接口实现并创建其实例的工作由容器完成,如J2EE开发中常用的Context.lookup(ServletContext.getXXX),都是Type1型IOC的表现形式。

ApacheAvalon是一个典型的Type1型IOC容器。

Type2构造子注入

构造子注入,即通过构造函数完成依赖关系的设定,如:

publicclassDIByConstructor{
privatefinalDataSourcedataSource;
privatefinalStringmessage;
publicDIByConstructor(DataSourceds,Stringmsg){
this.dataSource=ds;
this.message=msg;
}
……
}
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com