Java Spring没有"new"对象以及如何将遗留应用程序转换为"Spring"概念



我刚刚开始学习Java Spring以及依赖注入(DI)和控制倒置(IOC)的概念。

我了解到所有对象是单例,原型或请求和会话都从容器中检索。

容器管理阶级和对象的生命周期/范围之间的依赖项。

这背后的基本想法是,没有"新"操作员使用弹簧框架作为系统的骨干。(如果我错了,请纠正我)。

我想在没有弹簧框架的情况下进行编码的旧应用程序现代化,并管理第三方库类,并使用Spring注入它们。

我应该如何处理?

我了解到所有对象是单例,原型还是请求和会话,都从容器中检索到。

那不是完全正确的。并非所有所有对象,而是您被告知要解决的那些对象,是从容器中检索的。通常,您使用@Component注释来标记容器应知道的对象。除了@Component,还有其他注释原则上相同,但允许使用更细化的语义,例如@Repository注释,在其基本@Component上,并将@Target@Retention@Documented放在顶部。

容器管理阶级和对象的生命周期/范围之间的依赖项。

是。该容器为您提供了接线,即用@Ressource@Autowired@Inject注释的依赖关系,这取决于您喜欢的注释。在lifecycle期间,可能会有可能的事件,可以使用生命周期回调。另外:您可以确定豆范围。

这背后的基本思想是没有新事物。使用弹簧框架作为系统的骨干进行应用程序。(如果我错了,请纠正我)。

基本原则是,您将某种形式的对象的创建委托给容器。对象的creationconsumption的分离可以更大的灵活性,因此您的应用程序可以更好地测试性。

除了"组件"之外在您的申请中,有例如典型的容器喜欢 arraylist hashmap ,您像以前一样使用 new operator。

我想在没有弹簧框架的情况下进行编码的旧应用程序现代化,并管理第三方库类,并使用Spring注入它们。

我应该如何处理?

从上面所说的,应该是"简单":

1)浏览每个类文件并寻找其依赖项

2)重构将其丢掉,然后将@Component放在上面特殊情况:第三方对象,您无法访问源。然后,您必须将其构造自己包裹在工厂中,例如与@bean。

3)通过@Autowired(标记依赖项的弹簧特定注释)添加丢失的依赖项)

4) 服务层的重构组件 @Service @Component andotationinstead。

5)重构数据访问层,而不是使用@Component,可以使用@Repository

这应该使您可以与您一起工作。

最新更新