read AppFuse 1-初始化

1.  初始化配置信息:Appfuse利用监听器,在应用程序启动时,初始化配置信息

 

★ 监听器StartupListener功能:取得DAO.TYPE信息和角色信息,存入全局应用环境上下文,

初始化Spring,使之可用。

★ 应用:web.xml

   <listener>

        <listener-class>org.dudu.webapp.listener.StartupListener</listener-class>

      </listener>

StartupListener 监听器:继承于Spring ContextLoaderListenerSevelet

ServletContextListener,配置于Web.xml中。

 

 

 

 

 

说明:凡是继承ServletContextListener接口的类,在web容器启动时调用其

      contextInitialized方法进行初始化,当容器关闭时调用其contextDestroyed的方

法进行销毁,我们可以利用这个特性初始化一些信息。

    ★ 程序说明:(主要代码)

        public class StartupListener extends ContextLoaderListener

        implements ServletContextListener {

            public void contextInitialized(ServletContextEvent event) {

            //容器启动时,自动调用contextInitialized函数。

            //取得全局Application Scope 环境上下文

            ServletContext context = event.getServletContext();

            Map config = (HashMap) context.getAttribute(Constants.CONFIG);

 

 

 

 

 

            //DAO_TYPE_HIBERNATE = "hibernate"写入ServletContext

config.put(Constants.DAO_TYPE, daoType);

            context.setAttribute(Constants.CONFIG, config);

           

            //调用setupContext(context)函数初始化Spring

            public static void setupContext(ServletContext context) {

            //初始化Spring环境上下文,为getBean作准备,并且将ServletContext

             //交给Spring管理

            ApplicationContext ctx =

            WebApplicationContextUtils.getRequiredWebApplicationContext(context);

            // LookupManager为接口类,提供统一的调用接口 

            //通过Ico反射注入,查找lookupManagerDao属性。(1)

           LookupManager mgr = (LookupManager) ctx.getBean("lookupManager");

            //取得角色信息,存入ServletContext scope中。

            context.setAttribute(Constants.AVAILABLE_ROLES, mgr.getAllRoles());

    }

(1)的说明:在配置文件中取值,动态加载LookupManagerImpl

    客户面对接口LookupManager,底层实现为LookupManagerImplSpring的一大

                特点:自然的面向接口编程。LookupManagerImplPOJO的管理类,真正的

    数据操作委派给它的引用LookupDAO的具体实现类LookupDAOHibernate

Spring配置文件 applicationContext-service.xml

<bean id="lookupManager" class="org.dudu.service.impl.LookupManagerImpl">

                 <property name="lookupDAO"><ref bean="lookupDAO"/></property>(2)

 </bean>

(2)的说明:通过Ico动态加载对象属性LookupDAOHibernate

       Spring配置文件:applicationContext-hibernate.xml

        <!-- LookupDAO: Hibernate implementation -->

         <bean id="lookupDAO" class="org.dudu.dao.hibernate.LookupDAOHibernate">

        <property name="sessionFactory"><ref local="sessionFactory"/></property>

 </bean>

    public class LookupManagerImpl extends BaseManager implements LookupManager {

    private LookupDAO dao;

    public void setLookupDAO(LookupDAO dao) {

//Spring动态注入dao引用,从配置文件中取得具体的lookupDAO,又一次的面向//接口编程

             this.dao = dao;

         }

    public List getAllRoles() {

        // LookupManagerImpl将真正的数据操作委派个LookupDAOHibernate3

             List roles = dao.getRoles();

             List list = new ArrayList();

             Role role = null;

        for (int i = 0; i < roles.size(); i++) {

                 role = (Role) roles.get(i);

                 list.add(new LabelValue(role.getName(), role.getName()));

             }

        return list;

         }

}

图表 1 管理器类图

(3)      的说明:LookupDAOHibernate

图表 2 实体类图

 

 

 

 

 

 

 

 

 

 

public class LookupDAOHibernate extends BaseDAOHibernate implements LookupDAO {

    public List getRoles() {

        if (log.isDebugEnabled()) {

            log.debug("retrieving all role names...");

        }

        return getHibernateTemplate().find("from Role order by name");

    }

}

集成SpringStartupListener通过管理类LookupManagerImpl,委派LookupDAOHibernate类取得所有角色信息。然后将角色信息列表存入ServletContext环境上下文中。

StartupListener结束.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值