對於Bean來說,最佳的情況是它根本不知道自己是被Spring容器所管理,Bean可以作自己該從事的工作,而不會與Spring容器產生耦合。
然而有時候,您必須讓Bean知道容器管理它的一些細節,必須讓Bean知道自己在容器中是以哪個名稱所管理的,或者是讓它知道 BeanFactory、ApplicationContext 的存在,例如若Bean可以意識到ApplicationContext的存在的話,在Bean的某些動作發生時,可以發出事件讓感興趣的接受者來處理。
Spring中提供一些Aware相關介面,像是org.springframework.beans.factory.BeanNameAware、 org.springframework.beans.factory.BeanFactoryAware、 org.springframework.context.ApplicationContextAware等等,實作這些Aware介面的Bean在被初始之後,可以取得一些相對應的資源。
例如實作BeanNameAware介面的Bean,在屬性設定完成後、初始化方法之前(例如InitializingBean的 afterPropertiesSet()方法或自定義的init方法),會將Bean於定義檔中的名稱透過setBeanFactory()方法設定給 Bean:
package org.springframework.beans.factory;
public interface BeanNameAware {
public void setBeanName(String name);
}
實作BeanFactoryAware介面的Bean,在屬性設定完成後、初始化方法之前,Spring容器將會注入BeanFactory的實例:
package org.springframework.beans.factory;
public interface BeanFactoryAware {
public void setBeanFactory(BeanFactory beanFactory) throws BeansException;
}
而實作ApplicationContextAware的Bean,在Bean被初始後,將會被注入ApplicationContext的實例:
package org.springframework.context;
public interface ApplicationContextAware {
public void setApplicationContext(ApplicationContext context) throws BeansException;
}
另外還有org.springframework.context.ResourceLoaderAware介面,可以讓Bean取得ResourceLoader實例,並進一步取得相關的資源檔案。
然而必須注意的是,一但Bean意識到Spring的相關資源,就表示Bean開始與Spring產生耦合,因而就不易移植至其它的應用程式或框架之中。
分享到:
相关推荐
不使用XML定义档进行 Bean设置 Aware 相关介面 BeanPostProcessor BeanFactoryPostProcessor PropertyPlaceholderConfigurer PropertyOverrideConfigurer CustomEditorConfigurer ...
2.Algorithm Gossip: 费式数列. 3. 巴斯卡三角形 4.Algorithm Gossip: 三色棋 5.Algorithm Gossip: 老鼠走迷官(一) 6.Algorithm Gossip: 老鼠走迷官(二) 7.Algorithm Gossip: 骑士走棋盘 8.Algorithm Gossip: 八...
巴斯卡三角形 6 4.Algorithm Gossip: 三色棋 7 5.Algorithm Gossip: 老鼠走迷官(一) 9 6.Algorithm Gossip: 老鼠走迷官(二) 11 7.Algorithm Gossip: 骑士走棋盘 13 8.Algorithm Gossip: 八皇后 ...
2.Algorithm Gossip: 费式数列 5 3. 巴斯卡三角形 6 4.Algorithm Gossip: 三色棋 7 5.Algorithm Gossip: 老鼠走迷官(一) 9 6.Algorithm Gossip: 老鼠走迷官(二) 11 7.Algorithm Gossip: 骑士走棋盘 ...
此为很有人气的Gossip的学习笔记,里面深入浅出的讲解了关于spring框架的知识与学习心得,是理解spring的不可多得的好资料。 此资料为html形式,每个知识点单独列为一张html页面,阅读很方便,不需要pdf格式下的阅读...
R-gossip算法通过在分布式系统的集群代理节点上设置移位寄存器,优化了传统gossip算法的收敛速度和负载均衡效率。这一改进为分布式系统提供了一种有效的负载均衡优化方案,对分布式系统设计和性能优化具有重要的指导...
2.Algorithm Gossip: 费式数列 3. 巴斯卡三角形 4.Algorithm Gossip: 三色棋 5.Algorithm Gossip: 老鼠走迷官 6.Algorithm Gossip: 老鼠走迷官(二) 7.Algorithm Gossip: 骑士走棋盘 8.Algorithm Gossip: 八皇 9....
骆驼八卦 camel-gossip是一个组件,它利用 Gossip 协议通过控制路由。 草稿用法: from("gossip://<bound>:<port>/?peers=<listOfPeers>&routeIds=<listOfRouteIdsToControl>").to("controlbus:route");...
Gossip协议的Go实现。 概述 该软件包提供了最终一致的内存中数据存储的实现。 数据存储值使用推挽式八卦协议进行交换。 // Create a gossiper g := NewGossiper("<ip>:<port>", "<unique>", "<peer>") // Add ...
针对在分布式一致性系统中常用的gossip算法负载均衡效率较低的问题,本文在概率gossip算法(probabilistic gossip algorithm)的基础上,设计了一种寄存器gossip算法(register gossip algorithm,下文简称R-gossip...
4. **Spring Gossip_Simp**: 这个文件名可能是某种简化版的Spring教程,可能包含易于理解的Spring基础知识和常见概念,例如: - **XML配置**:介绍如何通过XML文件配置Spring Bean。 - **注解驱动开发**:使用...
gossip - yet another lisp interpreter gossip是一个lisp解释器, 语法借鉴了scheme以及common lisp, 此项目的主要目的是学习。 安装 下载源码 打包: mvn package 运行方式: java -jar your_gossip_home/gossip-1.0-...
nodejs_八卦 nodejs八卦协议实现 nodejs 八卦.js 连接到 localhost:8080 在 chrome 中查看网络状态 控制台命令: 重启重置对等体颜色 css_color 建立网络的节点 断网示例 重建网络
在"CSC-582-3-W15-GOSSIP-master"这个项目中,我们可以预期找到相关的源代码文件,这些文件可能包含了上述组件的实现。通过阅读和分析这些代码,可以深入理解Gossip协议在Java中的具体应用和实现细节,这对于学习和...
因此,我将软件命名为Gossip来构建一个工具,该工具使用户可以更有效,更方便地制作和传达故事。 使您的下一个演示文稿不是演示文稿。 入门 有一个可以帮助您使用Gossip创建和交付演示文稿所需的所有技术。 还有...
在SpringCloud框架中,部署Redis集群是实现高可用、数据持久化和分布式缓存的关键步骤。Redis是一款高性能的键值数据库,广泛应用于缓存、消息队列等多种场景。SpringCloud通过集成Spring Data Redis模块,使得在...
标题“良葛格Gossip_struts_spring_hibernate”表明这是一个关于编程框架和技术教程的集合,其中涵盖了Spring、Struts和Hibernate等关键组件。描述提到是Spring技术手册的作者提供的教程,暗示内容可能深入且权威。 ...
例如,./ ./gossip -p --verbose 实例化二进制后续时间以使用get参数接收资源。 例如,./ ./gossip get cats.jpg 运行测试 运行单元测试不需要任何设置。 go test ./... 包装说明 ID ID 包提供了生成唯一的随机 ...
标题中的“gossip”通常指的是一个分布式通信协议或库,用于节点间的高效、可靠的消息传递。在这种场景下,它可能是用JavaScript实现的一个轻量级、去中心化的通信框架,允许程序通过网络套接字(network sockets)...