程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> SpringMVC4集成ehcache,springmvc4ehcache

SpringMVC4集成ehcache,springmvc4ehcache

編輯:JAVA綜合教程

SpringMVC4集成ehcache,springmvc4ehcache


前言

     使用SpringMVC4集成ehcache來緩存服務器數據。

開發環境

    SpringMVC4、ehcache2.6、

 

項目結構

 

SpringMVC 集成ehcache

1、pom.xml

//除了SpringMVC 、sql server相關就是ehcache-core 
<dependency>
      <groupId>net.sf.ehcache</groupId>
      <artifactId>ehcache-core</artifactId>
      <version>2.6.11</version>
    </dependency>

2、springmvc-servlet.xml

     主要就是開啟cache注解,同時導入spring cache命名空間。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:cache="http://www.springframework.org/schema/cache"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd
       http://www.springframework.org/schema/cache
       http://www.springframework.org/schema/cache/spring-cache.xsd">

    <!--從配置文件加載數據庫信息-->
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations" value="classpath:config/jdbc.properties"/>
        <property name="fileEncoding" value="UTF-8"/>
    </bean>

    <!--配置數據源,這裡使用Spring默認-->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${sqlserver.driver}"/>
        <property name="url" value="${sqlserver.url}"/>
        <property name="username" value="${sqlserver.username}"/>
        <property name="password" value="${sqlserver.password}"/>
    </bean>


    <!--掃描Mapper-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.autohome.dao"/>
    </bean>

    <!--配置sqlSessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="configLocation" value="classpath:springmvc-mybatis.xml"/>
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!--啟用緩存注解-->
    <cache:annotation-driven cache-manager="cacheManager"/>
    <bean id="cacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
        <property name="configLocation" value="classpath:ehcache.xml"/>
    </bean>
    <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
        <property name="cacheManager" ref="cacheManagerFactory"/>
    </bean>

    <!--啟用最新的注解器、映射器-->
    <mvc:annotation-driven/>

    <!--使用默認的Servlet來響應靜態資源-->
    <mvc:default-servlet-handler/>

    <!--掃描Controller注解類-->
    <context:component-scan base-package="com.autohome.controller" />
    <!--掃描Service注解類-->
    <context:component-scan base-package="com.autohome.service"/>

    <!--jsp視圖解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

 

3、ehcache.xml

    xsd我配置以後一直報紅,不知道怎麼回事,後來試著運行了下發現不影響程序運行,索性就這麼用著

<?xml version="1.0" encoding="gbk"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.0.xsd">

    <diskStore path="java.io.tmpdir" />

      <defaultCache
        maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        overflowToDisk="false"
    />

    <cache name="myCache"
           eternal="false"
           maxElementsInMemory="10000"
           overflowToDisk="false"
           timeToIdleSeconds="0"
           timeToLiveSeconds="0"
           memoryStoreEvictionPolicy="LFU"/>

</ehcache>

 

3、Service層裡調用Dao層時使用緩存注解

      在listAllUser方法上使用Cacheable注解,第一次運行時緩存裡還沒數據控制台會打印query from database...再次調用則直接讀取緩存數據

@Cacheable(value = "myCache")
    public List<User> listAllUser() {
        System.out.println("query from database...");
        return userDao.listAllUser();
    }

  

4、Controller裡調用

@Controller
@RequestMapping("/User")
public class UserController {

    @Autowired
    UserService userService;

    @RequestMapping("/index")
    public ModelAndView index(){
        System.out.println("size:"+userService.listAllUser().size());

        ModelAndView mav =new ModelAndView("index");

        return mav;
    }
}

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved