InitializingBean 和 init-method都是初始化bean的方式。bean可以实现InitializingBean接口,也可以定义init-method方法,调用Bean的init-method方法。这是Spring为了降低对客户代码的侵入性,给bean的配置提供了init-method属性
这句 【这是Spring为了降低对客户代码的侵入性】怎么理解? 定义init-method这种方式不是也是只能在spring环境中运行吗?这样看它也是和spring耦合的呀?
InitializingBean 和 init-method都是初始化bean的方式。bean可以实现InitializingBean接口,也可以定义init-method方法,调用Bean的init-method方法。这是Spring为了降低对客户代码的侵入性,给bean的配置提供了init-method属性
这句 【这是Spring为了降低对客户代码的侵入性】怎么理解? 定义init-method这种方式不是也是只能在spring环境中运行吗?这样看它也是和spring耦合的呀?
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
虽然不知道这个原文在哪,但可以这么理解:
如果通过实现
InitializingBean
这种方式来实现 init hook,那么就必须要改造现有的 Class,实现InitializingBean
的afterPropertiesSet
方法可是我不想修改这个类,通过配置 init-method 的方式不是更好,方法都可以任意选择,不需要固定的
afterPropertiesSet
XML 方式:
Annotation 方式:
这个侵入性只是说,你配置 init hook 的方式,而不是运行在哪。
实现
InitializingBean
需要修改现有 Class,所以侵入性强;而通过指定 init-method 的方式不需要修改,所以侵入性弱