在osgi中利用service和spel实现全局常量

  osgi对于java的模块化提供了极大的好处,但是对于习惯了利用java进行编程的同志,在利用全局的数据时,感觉到要跨越多个bundle,不是很方便,但是在spring的编程中,利用常量进行bean的属性设置和在代码中应用,对于保持一个参量赋值的唯一性非常必要。

   于是想到利用osgi中的service,来共享一个常量设置的思路:

1、首先在一个公用的bundle中,定义一个常量的存储类:

public class GlobalConstantsImpl implements GlobalConstants {
	
	private static int SRC_DATA_SINA_T_DETAIL ;
	private static int SRC_DATA_AIGAOGAO_S_DAY;
	private static int SRC_DATA_AIGAOGAO_S_INDEX;
	public GlobalConstantsImpl(int sRCDATASINATDETAIL, int sRCDATAAIGAOGAOSDAY,
			int sRCDATAAIGAOGAOSINDEX) {
		super();
		SRC_DATA_SINA_T_DETAIL = sRCDATASINATDETAIL;
		SRC_DATA_AIGAOGAO_S_DAY = sRCDATAAIGAOGAOSDAY;
		SRC_DATA_AIGAOGAO_S_INDEX = sRCDATAAIGAOGAOSINDEX;
	}
	/* (non-Javadoc)
	 * @see org.tkxing.stock.utils.gconst.GlobalConstants#getSRC_DATA_SINA_T_DETAIL()
	 */
	public int getSRC_DATA_SINA_T_DETAIL() {
		return SRC_DATA_SINA_T_DETAIL;
	}
	/* (non-Javadoc)
	 * @see org.tkxing.stock.utils.gconst.GlobalConstants#getSRC_DATA_AIGAOGAO_S_DAY()
	 */
	public int getSRC_DATA_AIGAOGAO_S_DAY() {
		return SRC_DATA_AIGAOGAO_S_DAY;
	}
	/* (non-Javadoc)
	 * @see org.tkxing.stock.utils.gconst.GlobalConstants#getSRC_DATA_AIGAOGAO_S_INDEX()
	 */
	public int getSRC_DATA_AIGAOGAO_S_INDEX() {
		return SRC_DATA_AIGAOGAO_S_INDEX;
	}
	
	

 

这个类中,一属性是私有的,不能够在其他的地方赋值;二各个属性没有set方法,所以能够保证各个属性的值,只能够通过配置注入。

 2、然后再这个bundle中,注册一个service。

	<osgi:service ref ="globalConstant" interface ="org.tkxing.stock.utils.gconst.GlobalConstants"/>

 

3、在其他应用这些常量的地方,首先引用注册的service,然后通过spring的spel引用,就可以了:

	<osgi:reference id="globalConstants" interface ="org.tkxing.stock.utils.gconst.GlobalConstants"/>

 在spring的配置文件中,如下引用

#globalConstants.SRC_DATA_SINA_T_DETAIL

 

你可能感兴趣的:(spring,编程,bean,osgi)