-
Notifications
You must be signed in to change notification settings - Fork 24
guzz与spring相互引用接口
luocaihua edited this page Apr 30, 2015
·
1 revision
必须按照先前文档的介绍在spring中配置。
自动注入:
对于guzz中项目可能需要自定义的组件,包括域对象interpreter,自定义加载属性接口,自动分切表和自定义属性表接口,在实现时通过声明org.guzz.web.context.ExtendedBeanFactoryAware获取guzz的自动注入。 注入的 org.guzz.web.context.ExtendedBeanFactory 有2个方法: public Object getFactoryImpl() ; 返回容器环境,对于spring容器返回的是org.springframework.context.ApplicationContext对象 public Object getBean(String beanName) ; 通过spring bean的名称获取bean
GuzzContext获取:
也可以通过GuzzContext提供的2个方法直接获取。 public ExtendedBeanFactory getExtendedBeanFactory() ; 返回的为上面注入的ExtendedBeanFactory public Object getExtendedBean(String beanName) ; 通过bean的名称获取bean。 不过这两个方法不能在guzz初始化时调用,只能在系统运行期间调用。因为在guzz初始化时,ExtendedBeanFactory并没有初始化,初始化阶段调用会报错。 与spring协同时,guzz作为spring的一个bean启动。在guzz完成启动前并不能获取到完全启动后的spring环境(ApplicationContext),这时强制引用bean很容易出现spring bean的循环引用,引发错误;因此ExtendedBeanFactory的构建和注入是在guzz和spring都全部启动完成后调用的。接口:org.guzz.web.context.ExtendedBeanFactoryAware是所有guzz可能执行的主动回调中最后的一个,甚至在startup()之后才能调用(如果有类似的启动方法)。使用时需要特别注意。
例子:
<bean id="slowUpdateService" class="org.guzz.web.context.spring.GuzzServiceFactoryBean"> <property name="serviceName" value="guzzSlowUpdate" /> </bean>
定义一个bean,class为org.guzz.web.context.spring.GuzzServiceFactoryBean, serviceName的值为服务名称即可。一个bean对应一个服务。
例子:
<bean id="dataSource" class="org.guzz.web.context.spring.GuzzDataSourceFactoryBean"> <property name="masterDB" value="true" /> </bean>
定义一个bean,class为org.guzz.web.context.spring.GuzzDataSourceFactoryBean,有4个可选属性:
属性 | 取值 |
dbGroup | 数据库分组,默认为default。 |
tableCondition | 如果数据库库为VirtualDB,传入定位到需要数据源的分库条件。 |
masterDB | true或者false。获取主库数据源。与下面的slaveDB属性选择1个。 |
slaveDB | true或者false。获取1台从库的数据源。 |