Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我要避免代码中的对象实例化而使用Spring框架?_Java_Spring - Fatal编程技术网

Java 为什么我要避免代码中的对象实例化而使用Spring框架?

Java 为什么我要避免代码中的对象实例化而使用Spring框架?,java,spring,Java,Spring,请看,当我们向新手解释Spring框架时,我们会说我们希望避免在代码中实例化新的对象,Spring将注入依赖项。因此,我们将解释国际奥委会和DI。 我的问题是: “与传统实例化相比,我们为什么需要Spring实例化?” 答案是更好的对象管理吗?还是仅仅为了利用国际奥委会和DI? 请列出具体答案并加以解释。我想知道可能是什么原因。因为这使您能够专注于开发组件,并使您从开发锅炉板代码中解放出来,以一种方式设置这些组件 通过使用Spring,每个人都可以使用您的应用程序,并用自己的实现替换组件,就像自

请看,当我们向新手解释Spring框架时,我们会说我们希望避免在代码中实例化新的对象,Spring将注入依赖项。因此,我们将解释国际奥委会和DI。

我的问题是:

“与传统实例化相比,我们为什么需要Spring实例化?”

答案是更好的对象管理吗?还是仅仅为了利用国际奥委会和DI?
请列出具体答案并加以解释。我想知道可能是什么原因。

因为这使您能够专注于开发组件,并使您从开发锅炉板代码中解放出来,以一种方式设置这些组件

通过使用Spring,每个人都可以使用您的应用程序,并用自己的实现替换组件,就像自己的身份验证提供者一样,而不会干扰应用程序的其余部分

此外,它使您无需编写显式配置文件处理,因为Spring配置是应用程序配置


Spring非常适合许多人部署和使用大型应用程序

少用它。IOC对于测试驱动的开发非常有用,因为用“测试”组件替换组件很容易

准确了解应用程序中的组件非常重要。
IOC并不意味着取代实例化的所有用途。

我认为spring比直接对象实例化好,因为spring配置与其他代码明显分离。这使得组件松散耦合。由于松耦合,很容易更换/修改一个部件而不影响其他部件。这使得代码可维护,更重要的是可测试,从而产生质量更好的软件

IMHO,Springs依赖注入支持并鼓励使用良好的编程实践,比如使用接口(通过类型注入)和将事物模块化到不同的层,而不是编写巨大的类(如果你见过“Servlet中的一切都很好”——webapps,你可能知道我的意思)。由于注入服务或DAO对象很容易,比如只需一个简单的注释(比如@Autowired)或通过XML配置,所以模块化应用程序既快又容易

我认为,通过Spring处理所有事物的实例化仍然是有用的,如果对象是Spring不需要知道的,或者您只是在某个地方使用它们在层之间移动数据等,您仍然可以使用new创建对象


有些人抱怨Spring的xml配置。在Spring3.0中,新的注释使编码和简单配置变得非常快速,您的XML配置文件只需要包含软件的实际配置,而不是所有实际上从未更改的注入和“配置”。。例如,几年前,我们用Spring2.5构建了一个相对简单的内部应用程序(它已经有了一些注释,但我们没有使用它们),xml配置文件的大小非常快地增长到总共超过1000行。目前,我们有一个使用Spring3.0的项目,XML文件只包含100行,这些内容在构建项目后实际上需要进行配置。

正确地告诉我们。。。当涉及到软件质量时,代码的可测试性非常重要。最初,我一直在努力用JNDI测试代码。太棒了!顺便问一句,它是否与对象管理相关。。?使用GCI更好地处理对象我不确定你的意思,我不认为使用或不使用Spring对GC的运行方式有多大影响,但我想,当只需要一个实例时,将bean作为单例对象进行作用域这样的事情可以减少GC运行的需要。请参阅“IOC并不意味着取代实例化的所有用途。”是的,这是一条重要的信息。