当前位置: 首页 > wzjs >正文

便宜的手机网站建设如何找做网站的公司

便宜的手机网站建设,如何找做网站的公司,铜山网站开发,南宁网站建设哪家公司实力强‌1. Bean 生命周期流程图‌ 容器启动│├─1. Bean 实例化(调用构造函数)│├─2. 属性注入(依赖注入)│├─3. Aware 接口回调(BeanNameAware、BeanFactoryAware 等)│├─4. BeanPostProcessor.postPro…
1. Bean 生命周期流程图
容器启动│├─1. Bean 实例化(调用构造函数)│├─2. 属性注入(依赖注入)│├─3. Aware 接口回调(BeanNameAware、BeanFactoryAware 等)│├─4. BeanPostProcessor.postProcessBeforeInitialization()│├─5. 初始化方法(@PostConstruct、InitializingBean.afterPropertiesSet()、init-method)│├─6. BeanPostProcessor.postProcessAfterInitialization()│├─7. Bean 就绪(进入可用状态)│└─容器关闭│├─8. 销毁方法(@PreDestroy、DisposableBean.destroy()、destroy-method)│└─资源释放

2. 核心阶段代码实现
示例 Bean 类
public class DemoBean implements BeanNameAware, BeanFactoryAware,InitializingBean, DisposableBean {private String name;// 1. 实例化(构造函数)public DemoBean() {System.out.println("1. 构造函数调用");}// 2. 属性注入public void setName(String name) {this.name = name;System.out.println("2. 属性注入: name = " + name);}// 3.1 BeanNameAware 接口回调@Overridepublic void setBeanName(String beanName) {System.out.println("3.1 BeanNameAware: beanName = " + beanName);}// 3.2 BeanFactoryAware 接口回调@Overridepublic void setBeanFactory(BeanFactory beanFactory) throws BeansException {System.out.println("3.2 BeanFactoryAware: beanFactory = " + beanFactory);}// 5.1 @PostConstruct 注解(需启用注解驱动)@PostConstructpublic void postConstruct() {System.out.println("5.1 @PostConstruct 方法调用");}// 5.2 InitializingBean 接口方法@Overridepublic void afterPropertiesSet() throws Exception {System.out.println("5.2 InitializingBean.afterPropertiesSet()");}// 5.3 自定义初始化方法(XML/JavaConfig 配置)public void customInit() {System.out.println("5.3 自定义 init-method");}// 8.1 @PreDestroy 注解(需启用注解驱动)@PreDestroypublic void preDestroy() {System.out.println("8.1 @PreDestroy 方法调用");}// 8.2 DisposableBean 接口方法@Overridepublic void destroy() throws Exception {System.out.println("8.2 DisposableBean.destroy()");}// 8.3 自定义销毁方法(XML/JavaConfig 配置)public void customDestroy() {System.out.println("8.3 自定义 destroy-method");}
}
BeanPostProcessor 实现
public class DemoBeanPostProcessor implements BeanPostProcessor {// 4. 初始化前处理@Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) {if (bean instanceof DemoBean) {System.out.println("4. BeanPostProcessor.postProcessBeforeInitialization()");}return bean;}// 6. 初始化后处理@Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) {if (bean instanceof DemoBean) {System.out.println("6. BeanPostProcessor.postProcessAfterInitialization()");}return bean;}
}

3. 配置方式
XML 配置
<bean id="demoBean" class="com.example.DemoBean"init-method="customInit"destroy-method="customDestroy"><property name="name" value="test-bean"/>
</bean><bean class="com.example.DemoBeanPostProcessor"/>
Java 配置
@Configuration
public class AppConfig {@Bean(initMethod = "customInit", destroyMethod = "customDestroy")public DemoBean demoBean() {DemoBean bean = new DemoBean();bean.setName("test-bean");return bean;}@Beanpublic DemoBeanPostProcessor demoBeanPostProcessor() {return new DemoBeanPostProcessor();}
}
注解驱动支持
@Configuration
@ComponentScan(basePackages = "com.example")
@EnableAspectJAutoProxy // 启用注解驱动(如 @PostConstruct)
public class AppConfig {}

4. 测试代码
public class LifecycleTest {public static void main(String[] args) {// 创建容器AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);DemoBean bean = context.getBean(DemoBean.class);System.out.println("7. Bean 已就绪: " + bean);// 关闭容器(触发销毁方法)context.close();}
}

5. 输出结果
1. 构造函数调用
2. 属性注入: name = test-bean
3.1 BeanNameAware: beanName = demoBean
3.2 BeanFactoryAware: beanFactory = ...(容器对象)
4. BeanPostProcessor.postProcessBeforeInitialization()
5.1 @PostConstruct 方法调用
5.2 InitializingBean.afterPropertiesSet()
5.3 自定义 init-method
6. BeanPostProcessor.postProcessAfterInitialization()
7. Bean 已就绪: com.example.DemoBean@123456
8.1 @PreDestroy 方法调用
8.2 DisposableBean.destroy()
8.3 自定义 destroy-method

6. 关键扩展点总结
扩展方式适用场景优先级顺序
@PostConstruct推荐使用,代码简洁最先执行
InitializingBean框架接口,侵入性强次之
init-methodXML/Java 配置,无侵入最后执行
BeanPostProcessor全局拦截所有 Bean 的初始化过程在初始化前后插入逻辑

7. 注意事项
  1. 作用域影响‌:
    • prototype 作用域的 Bean 不会触发销毁方法(需手动管理资源)。
  2. 执行顺序‌:
    • Aware 接口回调在属性注入之后、初始化方法之前执行。
  3. 配置冲突‌:
    • 若同时使用 @PostConstructInitializingBean 和 init-method,执行顺序如上所示。
  4. 容器关闭‌:
    • 需调用 context.close()(或 context.registerShutdownHook())触发销毁方法。
http://www.dtcms.com/wzjs/96924.html

相关文章:

  • 周浦网站建设公司软文发布公司
  • 有没有专做烘焙的网站三只松鼠营销策划书
  • 邳州网站开发深圳关键词推广优化
  • 橙子建站验证码填了会怎样国内重大新闻10条
  • 网站建设 标准汕头seo关键词排名
  • 山东济南网站建设站长工具百科
  • 坂田英文网站制作百度seo原理
  • 厦门网站建设团队谷粉搜索谷歌搜索
  • 网站开发培训排名账号seo是什么
  • 设计一个网站的首页步骤深圳seo顾问
  • 学做电影网站策划方案
  • 和coser做网站模板免费下载网站
  • M97 网站建设网络公司整站源码seo运营是做什么的
  • 专门做金融的招聘网站谷歌seo工具
  • 百姓网招聘信息优化疫情二十条措施
  • 用illustrator做网站宁波如何做seo排名优化
  • 网站别人做的上面有方正字体网站推广和seo
  • 网站建设发展现状免费p站推广网站入口
  • 公司网站建设维护合同范本seo顾问服务福建
  • 网站群建设方案推广任务发布平台app
  • 北京海淀区网站建设邯郸seo推广
  • 审计网站建设毕业设计网站设计报价方案
  • 怎么在百度搜索到我的网站培训心得体会感悟
  • 政府网站建设成本电子商务主要干什么
  • wordpress 不显示发布时间seo整站优化什么价格
  • 自建网站要多少钱在线数据分析网站
  • 银行内部网站建设建议产品推广软文200字
  • wordpress安装 ubuntu青岛网站seo
  • 企业管理咨询与诊断杭州seo网站哪家好
  • b2b 贸易网站在线企业管理培训课程