首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring如何利用Spring?

Spring如何利用Spring?
EN

Stack Overflow用户
提问于 2020-04-11 16:13:23
回答 2查看 294关注 0票数 0

我试图了解Spring是什么以及它是如何工作的。我不能回答的问题如下:

  1. 与AspectJ相比,Spring没有被使用的原因之一是Spring不能向任何不是由Spring工厂创建的东西中添加一个方面。这是什么意思?不是所有的东西都是从Spring创建的吗?
  2. Spring如何“幕后”使用Spring模块?
  3. 什么是"Spring是基于代理的“?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-11 17:03:10

与AspectJ相比,Spring没有被使用的原因之一是Spring不能向任何不是由Spring工厂创建的东西中添加一个方面。这是什么意思?不是所有的东西都是从Spring创建的吗?

简而言之,Spring为容器中的bean构建代理,并依赖于这些代理来实现AOP。

关于与AspectJ的比较:

来自Spring.io参考文档:

“……

因此,例如,Spring的AOP功能通常与Spring IoC容器一起使用。方面是通过使用普通bean定义语法来配置的(尽管这允许强大的“自动代理”功能)。这是与其他AOP实现的一个重要区别。对于Spring,您无法轻松或有效地完成一些事情,比如建议非常细粒度的对象(通常是域对象)。在这种情况下,AspectJ是最好的选择。然而,我们的经验是,Spring为企业级Java应用程序中的大多数问题提供了一个很好的解决方案,这些问题都适合AOP。

Spring从不与AspectJ竞争以提供全面的AOP解决方案。我们认为基于代理的框架(如Spring )和成熟的框架(如AspectJ )都是有价值的,它们是互补的,而不是在竞争中。Spring无缝地将Spring和IoC与AspectJ集成在一起,以便在一致的基于Spring的应用程序体系结构中启用AOP的所有使用。这种集成不影响Spring或AOP联盟API。Spring仍然向后兼容。有关Spring的讨论,请参阅下面一章。“

什么是"Spring是基于代理的“?Spring如何“幕后”使用Spring模块?

基于代理的意思是,bean被包装在另一个对象(代理)中,该对象(代理)约束对遵从act的调用,并且可以在对包装的对象调用真正的方法之前对该拦截采取行动。

实现此功能的方法有两种,一种是使用java动态代理(反射),另一种是使用CGLIB,它是一个在字节码级别添加代理功能的库。

Spring.io参考文档

一篇关于代理的文章

票数 1
EN

Stack Overflow用户

发布于 2020-04-11 16:24:29

您应该阅读此以进行比较,https://stackoverflow.com/questions/1606559/spring-aop-vs-aspectj&ved=2ahUKEwim6cD24-DoAhVMzaQKHd4SDfMQFjAMegQICRAB&usg=AOvVaw1Sps_B0sPQPKRD5N9UtOpA&cshid=1586622128032

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61159888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档