Jim Blog I've been trying so hard,but doesn't even matter
博客信息

关于整合框架配置的小分析

发布时间:『 2018-05-30 18:15 』  博客类别:JavaWeb  阅读(116) 评论(0)

      我发现有些刚入门学框架甚至已经学了一段时间框架的人,对于框架整合的配置都是硬记所需配置,或者配好一个模板以后所有用到的项目有仿照这个模板。当然,为了节约时间复制粘贴在所难免,但为了避免手中没有资源并没网的情况,最好还是了解一下框架整合为何这样配比较好。本文不涉及具体配置,只是谈谈配置思路,最好是已经有过框架整合经验但只知道照着配不知道为什么这么做的同学。

Struts2:

        作为一个掌管web层的框架,当然首先在于拦截(过滤)url。要想使用Struts2,我们只需在web.xml配置一个过滤器,拦截对应的url,然后让Struts2的内部转给对应的Action进行处理即可。如果用注解实现action的配置,则不需要有struts.xml文件。配置 web.xml 的代码如下:

<filter>
           <filter-name>struts2</filter-name>
           <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
           <init-param>
                <param-name>struts.i18n.encoding</param-name>
                <param-value>utf-8</param-value>
           </init-param>
     </filter>
     <filter-mapping>
           <filter-name>struts2</filter-name>
           <url-pattern>/*</url-pattern>
     </filter-mapping>


SpringMVC:

         Struts2一样, 要拦截url,不过拦截的方式不太一样,SpringMVC中是配置一个Servlet,拦截到对应的url请求后转发到对应的Controller类。一般将springmvc的配置文件和spring的配置文件分开(不分开也能运行),所以需要自行加载springmvx的配置文件,代码如下:

<servlet>
           <servlet-name>springmvc</servlet-name>
           <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
           <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:springmvc.xml</param-value>
           </init-param>
     </servlet>
 
     <servlet-mapping>
           <servlet-name>springmvc</servlet-name>
           <url-pattern>/</url-pattern>
     </servlet-mapping>

      springmvc.xml中,开启注解扫描和实例化视图解析器则就完成了基本配置。视图解析器是用来对Controller中设置的视图名(直接返回的字符串参数或ModelAndView中设置的视图名)跳转到对应视图。

     <mvc:annotation-driven />
     <context:component-scan base-package="site.jimblog.controller"/>
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>


Spring:

      在web项目中使用spring,我们需要在项目启动时就加载spring的配置文件,所以需要在web.xml中添加一个监听器,监听spring提供的上下文装载监听器,所以web.xml中要配置如下代码:

<context-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>classpath:applicationContext.xml</param-value>
     </context-param>
     <listener>
           <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
     </listener>

        在框架整合项目中,spring还要负责各种对象的实例化,自己写的类当然就用注解搞定,不过对于引用的数据库连接和持久化框架的类,则需要写在配置文件中。比如要配置数据库源DataSource,根据所使用的持久层框架配置对应的SessionBean,transactionManager事务并不是必须要在spring的配置文件中配置的,但使用aop对事务进行配置会使整个项目更清晰简洁,transactionManager根据所选择的持久层框架用到的类有所不同,甚至可以使用spring自带的事务管理器。下面给一个我常用的事务切面模板,自己改改就能使用:

<tx:advice id="txAdvice"transaction-manager="transactionManager">  
        <tx:attributes>  
            <tx:method name="insert*"propagation="REQUIRED" />  
            <tx:method name="update*"propagation="REQUIRED" />  
            <tx:method name="edit*"propagation="REQUIRED" />  
            <tx:method name="save*"propagation="REQUIRED" />  
            <tx:method name="add*"propagation="REQUIRED" />  
            <tx:method name="new*"propagation="REQUIRED" />  
            <tx:method name="set*"propagation="REQUIRED" />  
            <tx:method name="remove*"propagation="REQUIRED" />  
            <tx:method name="delete*"propagation="REQUIRED" />  
            <tx:method name="change*"propagation="REQUIRED" />  
            <tx:method name="get*"propagation="REQUIRED" read-only="true"/>  
            <tx:method name="find*"propagation="REQUIRED" read-only="true"/>  
            <tx:method name="load*"propagation="REQUIRED" read-only="true"/>  
            <tx:method name="*"propagation="REQUIRED" read-only="true"/>  
        </tx:attributes>  
    </tx:advice>  
    <aop:config>  
        <aop:pointcut id="serviceOperation"  
            expression="execution(*
site.jimblog.service.*.*(..))" />  
        <aop:advisor advice-ref="txAdvice"pointcut-ref="serviceOperation" />  
</aop:config>


Hibernate:

有了Spring负责数据库源以后,Hibernate只需配置下自身选择的方言之类的配置了,可以在Spring配置文件中一并配置Hibernate,但一般不推荐这么做。

<property name="hibernate.show_sql">true</property>
           <property name="hibernate.format_sql">true</property>
           <property name="hibernate.hbm2ddl.auto">update</property>
           <property name="hibernate.MySQLDialect">org.hibernate.dialect.MySQLDialect</property>


MyBatis:

Hibernate一样,甚至比Hibernate更简单,在配置文件中根据个人需要配置下别名和对应的mapper.xml或者class(使用注解配置)就行了。也是推荐单独一个配置文件而不是在Spring配置文件中一并配置。



关键字:   SSH     SSM     框架配置  
博主信息
Jim
(生命,是一场徒劳的坚持)