最近在研究liferay5.2.2的时候,发现虽然这个版本是SSH框架的基础上开发的,而且还有一些扩展的配置文件,可以针对自己的portlet进行bean和db相关资源的配置,但一直没有找到配置action引用spring中的bean的文件。于是采用了另一种比较笨的方法,在Action的类中,需要调用spring的bean的时候,增加如下代码:
ServletContext sc = this.getServlet().getServletContext();
WebApplicationContext wc = WebApplicationContextUtils
.getWebApplicationContext(sc);
IUserManager userManager = (IUserManager)wc.getBean("userManager");
这样就可以得到BEAN了。
还可以利用liferay提供的类来获取BEAN,如下:
IUserManager userManager = (IUserManager)PortalBeanLocatorUtil.locate("userManager")
------------------------------------------------------------------------------
spring和hibernate的配置:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="liferayDataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/test/po/tuser.hbm.xml</value>
</list>
</property>
</bean>
<bean id="dao" class="com.y3technologies.mx3.spr.dao.impl.BaseHibernateDAO">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
这样看着就和我们自己使用SSH的情况一样了。