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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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框架中回调方法和Bean后处理器的区别_Java_Spring_Jakarta Ee_Javabeans - Fatal编程技术网

Java Spring框架中回调方法和Bean后处理器的区别

Java Spring框架中回调方法和Bean后处理器的区别,java,spring,jakarta-ee,javabeans,Java,Spring,Jakarta Ee,Javabeans,请原谅这个春季初学者的问题。我正在阅读第一版的第4章,并将介绍回调方法和Bean后处理器 现在我对这两个问题感到困惑,似乎它们在创建bean实例时都做了些什么,那么我如何区分这两个呢?也许举个例子就好了 我个人的理解是,如果我们必须找到一个不同点,那么回调方法在实际创建bean时启动,bean后处理器在创建bean之后被稍微调用,我认为区别还可能在于初始化回调方法只关注一个bean,而Beanpost procso将逐个处理所有bean实例 还有,有谁能帮我把JSR250注释@PreDestro

请原谅这个春季初学者的问题。我正在阅读第一版的第4章,并将介绍回调方法和Bean后处理器

现在我对这两个问题感到困惑,似乎它们在创建bean实例时都做了些什么,那么我如何区分这两个呢?也许举个例子就好了

我个人的理解是,如果我们必须找到一个不同点,那么回调方法在实际创建bean时启动,bean后处理器在创建bean之后被稍微调用,我认为区别还可能在于初始化回调方法只关注一个bean,而Beanpost procso将逐个处理所有bean实例

还有,有谁能帮我把JSR250注释@PreDestroy和@PostConstruct与上述两个概念进行比较,进一步解释两者的区别吗


非常感谢你的帮助

我已经有一段时间没有使用这两种方法了,但我认为您所指的回调方法和@PostConstruct方法是一样的。但要回答你的问题,区别在于

@PostConstruct或afterPropertiesSet方法是特定类的内部方法,该类将在bean实例化后调用。这就是您放置特定于类型的操作的地方

2 BeanPostProcessor将接触所有Spring Bean。所以这里可以放置横切功能,不一定是特定于类的

一个小例子。。。假设我有一个小的地址簿应用程序,用于跟踪我的朋友和他们的地址。如果我有一些无法追踪的疯狂bug,我可能会使用BeanPostProcessor用一些日志来包装我所有的SpringBean,比如现在调用Address.getStreet…,现在调用Address.getCity

现在,我可能会在Address中使用@PostConstruct方法来验证和查找某些web服务中我只有城市/州地址的邮政编码

现在,我可能没有一个域对象在实际中访问web服务,但这个想法是为了说明@PostConstruct可以处理特定于类的内容,而BeanPostProcessor可以处理跨多个类的内容


另外值得注意的是,BeanPostProcessor有两种方法可以覆盖:postProcessBeforeInitialization和postProcessAfterInitialization,这两种方法可以让您决定在bean的@PostConstruct方法之前和之后运行什么。

我已经有一段时间没有使用这两种方法了,但是我认为你提到的回调方法和@PostConstruct方法是一样的。但要回答你的问题,区别在于

@PostConstruct或afterPropertiesSet方法是特定类的内部方法,该类将在bean实例化后调用。这就是您放置特定于类型的操作的地方

2 BeanPostProcessor将接触所有Spring Bean。所以这里可以放置横切功能,不一定是特定于类的

一个小例子。。。假设我有一个小的地址簿应用程序,用于跟踪我的朋友和他们的地址。如果我有一些无法追踪的疯狂bug,我可能会使用BeanPostProcessor用一些日志来包装我所有的SpringBean,比如现在调用Address.getStreet…,现在调用Address.getCity

现在,我可能会在Address中使用@PostConstruct方法来验证和查找某些web服务中我只有城市/州地址的邮政编码

现在,我可能没有一个域对象在实际中访问web服务,但这个想法是为了说明@PostConstruct可以处理特定于类的内容,而BeanPostProcessor可以处理跨多个类的内容


另外值得注意的是,BeanPostProcessor有两种方法可以覆盖:postProcessBeforeInitialization和postProcessAfterInitialization,这将让您决定在bean的@PostConstruct方法之前和之后运行什么。

bean后处理器接口有两种回调方法:1。PostProcessBeforeInitialization和PostProcessAfterInitialization。 PostProcessBeforeInitialization方法在调用bean的init方法或afterPropertySet方法之前调用

PostProcessAfterInitialization方法是在bean初始化完成之后调用的


Bean后处理器提供了在初始化Bean之前和之后执行某些操作的机会。

Bean后处理器接口有两种回调方法:1。PostProcessBeforeInitialization和PostProcessAfterInitialization。 PostProcessBeforeInitialization方法在调用bean的init方法或afterPropertySet方法之前调用

PostProcessAfterInitialization方法是在bean初始化完成之后调用的

Bean后处理器提供了chanc
您提到的地址是一个bean吗?而且,这些地址在实际开发中很少使用吗?很高兴能提供帮助,是的,在这个示例中,地址是一个Springbean-实际上我没有太多使用它们,通常我将我的大部分初始化放在默认构造函数中。但我认为如果您有一些应用程序范围的关注点,比如通用日志记录,BeanPostProcessor可能是一个很好的工具。但是没有,我也没有用过。谢谢你,你提到的地址是一个bean吗?还有,这些在实际开发中很少使用吗?很高兴能提供帮助,是的,在这个示例中,地址是一个Springbean-实际上我没有太多使用它们,通常我把我的大部分初始化放在默认构造函数中。但我认为如果您有一些应用程序范围的关注点,比如通用日志记录,BeanPostProcessor可能是一个很好的工具。但是没有,我也没有用过。有一些Koushik关于Spring的视频。你可以看。他提供了一些富有成效的信息。有一些Koushik关于Spring的视频。你可以看。他提供了一些富有成效的信息。