微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

入侵的确切含义是什么? 什么使得Spring非侵入性?

我是spring框架的新手。 在我看到的大多数Spring教程中,Spring被描述为“非侵入式”。

什么是侵入? 在Java中使用Spring的优点是什么?它是什么使它非侵入?

Subversion的Web开发

Nginx与Tomcatconfiguration

使用Nginx或Apache来提供dynamic内容

使用Java Apache PoolingClientConnectionManager泄漏内存,如何解决

无法访问子文件夹中的控制器

如果一个IoC容器是侵入式的,这意味着你的代码需要明确的注意到依赖注入。 例如,在Guice中,您使用@Inject注释(和其他)。 这些注释比以前更加标准化,这是很好的 – 这意味着只需一套注释(至少在理论上)可以使您的代码可用于各种不同的侵入式IoC容器。

使用非侵入式容器,您可以编写代码而不涉及IoC …所有内容都是通过对即使不使用IoC的成员和注释进行反射来确定的。

无论侵入式还是非侵入式容器都有其优点和缺点 – 例如,代码中更具体的代码可以让您更好地控制一些绑定的细节,但值得注意的是它们之间的区别。

检查http://forum.springsource.org/showthread.PHP?27846-Spring-is-non-invasive

这是什么意思?

“你不是被迫导入或扩展任何Spring API,Struts迫使你扩展Action”。

当然,在一些领域,比如web框架,根据框架来避免应用代码是不可能的。 但是,Spring始终试图达到配置管理所关注的非侵入性理想

春天可以是侵入性的,非侵入性的,只有你自己。

Non-invansive spring不使用注释(例如@Autowired),也不使用它自己的类(例如JdbcTemplate),它只使用配置将你的bean(简单的POJO)连接在一起(你仍然需要在代码中初始化spring,无论如何这是有点侵入性的)。 但是,你可以自由地放弃春天,没有任何重大的代码更改。 另一方面,入侵的春天为您提供了模板类(用于持久性,Web服务,…),注释和其他不能简单地离开的东西(如果使用的话)。

编辑:有人说春天不是侵入性的,因为它不会强迫你实现接口,也不会扩展类。 对我来说,一个框架不是侵入性的,如果它可以很容易地被替换。

大多数的Java框架迫使你扩展他们的一个类或实现他们的接口之一。 这种侵入式编程模型的例子是EJB 2时代的无状态会话bean,早期版本的Struts,WebWork,Tapestry。

春天避免乱抛垃圾你的代码与其API。 Spring永远不会强迫你实现一个Spring特定的接口或者扩展一个Spring特定的类 。 相反,这些类通常没有任何迹象表明它们被Spring使用。

public class HelloWorld { public String hello() { return "Hello World"; } }

这是一个简单的java类(POJO)。 没有任何表示它是一个Spring组件。 Spring是非侵入式的,意味着这个类可以在Spring应用程序中运行,就像在非Spring应用程序中一样 。 虽然POJO很简单,但它们可以是强大的。

POJO可以在Spring中变得强大的一种方法是使用Dependeny Injection。

Spring框架被认为是一种非侵入性的手段,它并不强迫程序员从Spring API给出的任何预定义的类或接口扩展或实现它们的类,在我们用来扩展Action Class的struts中,这就是为什么说struts是侵入性的。

在struts框架的情况下,它会迫使程序员,程序员类必须从struts API提供的基类中扩展。

使用@Resource和@Inject而不是@Component和@Autowired。 这是非常有用的,并且在像Spring和Guice这样的DI框架中进行了标准化。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐