Java 是Spring@后期施工和@前期施工方法';注释是AOP的一种形式吗?

Java 是Spring@后期施工和@前期施工方法';注释是AOP的一种形式吗?,java,spring,aop,spring-aop,postconstruct,Java,Spring,Aop,Spring Aop,Postconstruct,我对Spring@PostConstruct和@PreDestroy方法的注释有以下疑问 因此,@PostConstruct注释意味着在对象创建之后以及使用setters方法完成依赖项注入之后,将自动执行被注释的方法 @PreDestroy在ApplicationContext关闭之前自动执行 我的疑问是:@PostConstruct和@PreDestroy注释是否是AOP的一种形式?两者都是EE规范的一部分,而不是spring的一部分。请参考各自的文档并获取更多详细信息。AOP>是一种编程范式

我对Spring@PostConstruct@PreDestroy方法的注释有以下疑问

因此,@PostConstruct注释意味着在对象创建之后以及使用setters方法完成依赖项注入之后,将自动执行被注释的方法

@PreDestroy在ApplicationContext关闭之前自动执行


我的疑问是:@PostConstruct@PreDestroy注释是否是AOP的一种形式?

两者都是EE规范的一部分,而不是spring的一部分。

请参考各自的文档并获取更多详细信息。

AOP>是一种编程范式,请参见。如果我正确理解您的问题,您所问的是AOP范围内的“@PostConstruct and@PreDestroy”。我的答案是肯定的,至少因为它们是使用非面向对象的反射开发的

注:

AOP包括支持 在源代码级别对关注点进行模块化


正如Bond所提到的,这些是Java EE注释,而不是Spring注释——但是与许多注释一样,Spring支持它们(就像Springs
@Autowired
与EE
@Inject
等)

然而,我不会说反射不是OOP——尽管它可能不利于纯封装,但出于充分的理由,它是主要OOP语言的组成部分。反射使用也不意味着AOP

AOP通常用于在方法之前/之后/周围调用某些内容(在方法中不可见的代码),通常由注释表示(如Springs
@Transactional
),但也可以在其他位置声明(配置)<另一方面,code>@PostConstruct和
@PreDestroy
主要是生命周期方法,这类钩子将在特定时间发生,它们所做的任何事情都明确地存在于代码中


所以这里没有隐藏的方面,在典型的AOP意义中绝对没有方面。唯一隐藏的是在适当的时候召唤它的魔法。但是,虽然Java不直接支持AOP,但不需要AOP库,只需要简单的反射。我怀疑是否有人会调用JVM的关闭钩子AOP。

Tnx,我的意思是,在我看来,这两个注释都在AOP范围内,因为在执行特定事件时(在@PostConstruct的对象构造和setter injection之后,在@PreDestroy的ApplicationContext关闭之前)带注释的方法是自动执行的。我的推理正确吗?这两个注释都被定义为J2EE规范的一部分。但是,Spring允许您出于自己(非EE)的目的使用这些相同的标准注释。