CacheManager,spring缓存

ehcache.xml:


    xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
    updateCheck="false">
    
             timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" />

             timeToIdleSeconds="3600" timeToLiveSeconds="3600" overflowToDisk="true" />
    


CacheManager,spring缓存_第1张图片

2.applicationContext-ehcache.xml


    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ehcache="http://www.springframework.org/schema/cache"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans    
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/cache 
    http://www.springframework.org/schema/cache/spring-cache-3.1.xsd">

    

    
        
    

             class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
        
    

CacheManager,spring缓存_第2张图片

 

 

3.CacheService implements InitializingBean

package com.tianjian.property.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import org.json.JSONArray;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.tianjian.property.entity.system.Admin;
import com.tianjian.property.entity.system.Department;
import com.tianjian.property.entity.system.Position;

import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;

@Service
public class CacheService implements InitializingBean {

    @Autowired
    private DepartmentService departmentService;
    
    @Autowired
    private AdminService  adminService;
    
    @Autowired
    private PositionService positionService;
    
    
    //设置机构缓存   格式为
    public void setDepartment(){
            CacheManager manager = CacheManager.create();  
            Cache cache=manager.getCache("ORGANAZATION"); 
            List rs=departmentService.getAllDepartment();
            Map map=new HashMap();
            for(int i=0;i                 map.put(rs.get(i).getDeptCode(), rs.get(i));
            }
            Element element=new Element("org",map);
            cache.put(element);

            if(cache!=null)
            cache.removeAll();

    }
    
    //岗位缓存
    public void setPosition(){
        CacheManager manager = CacheManager.create();  
        Cache cache=manager.getCache("ORGANAZATION"); 
        List rs=positionService.getAllPosition();
        Map map=new HashMap();
        for(int i=0;i             map.put(rs.get(i).getDeptCode()+"-"+rs.get(i).getPositionCode(), rs.get(i));
        }
        Element element=new Element("position",map);
        cache.put(element);
        if(cache!=null)
        cache.removeAll();
    }
    

    
    public void cacheInit(){
        CacheManager manager = CacheManager.create();  
        Cache cache=manager.getCache("ORGANAZATION"); 
        if(cache.get("org")==null){
            setDepartment();
        }
        if(cache.get("position")==null){
            setPosition();
        }
    }
    
    //根据机构编号获取机构
    public Department getDepartmentByDeptCode(String deptCode){
        CacheManager manager = CacheManager.create();  
        Cache cache=manager.getCache("ORGANAZATION"); 
        Map org=(Map) cache.get("org");
        Department dept=org.get(deptCode);
        return dept;
    }
    
    //获取所有部门
    public List getAllDepartment(){
        return departmentService.getAllDepartment();
    }
    
    
    public List getChildDepartment(String deptCode,boolean child){
         List departments=new ArrayList();
        if(!child){
            return departmentService.getChildDepartment(deptCode);
        }else{
            departments.addAll(departmentService.getChildDepartment(deptCode));
            List  list=departmentService.getChildDepartment(deptCode);
            for(Department dept:list){
                departments.addAll(getChildDepartment(dept.getDeptCode(),true));
            }
            return departments;
        }
    }
    
    
    //根据部门code获取该部门下所有人员  child是否获取下级人员
    public List getAdminByDeptCode(String deptCode,boolean child){
         List adminList=new ArrayList();
        if(!child){
            adminList.addAll(adminService.getAdminByDeptCode(deptCode));
        }
        if(child){
            adminList.addAll(adminService.getAdminByDeptCode(deptCode));
            List  list=getChildDepartment(deptCode,true);
            for(Department dept:list){
                adminList.addAll(getAdminByDeptCode(dept.getDeptCode(),true));
            }
        }
        return adminList;
    }
    
    //获取该岗位下所有成员
    public List getAdminByPosition(String deptCode,String positionCode){
        CacheManager manager = CacheManager.create();  
        Cache cache=manager.getCache("ORGANAZATION"); 
        Map positionCache=(Map) cache.get("position");
        Position position=positionCache.get(deptCode+"-"+positionCode);
        List admin=new ArrayList();
        if(position!=null){
            JSONArray json=new JSONArray(position.getPersons());
            List guids=new ArrayList();
            for(int i=0;i                 guids.add(json.get(i).toString());
            }
            admin.addAll(adminService.getAdminByGuid(guids));
        }
        return admin;
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        cacheInit();        
    }
}
 

CacheManager,spring缓存_第3张图片

 

 

4.DepartmentService

package com.tianjian.property.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.tianjian.property.dao.system.DepartmentDao;
import com.tianjian.property.entity.system.Department;

@Service
@Transactional
public class DepartmentService {

    @Autowired
    private DepartmentDao deptDao;
    
    public List getDepartmentByDeptCode(String deptCode){
        return deptDao.getDepartmentByCode(deptCode);
    }
    
    public List findAll(String deptCode) {
        List list = deptDao.searchDept(deptCode);
        return list;
    }

    @Cacheable(value="ORGANAZATION", key="deptAll")  
    public List getAllDepartment() {
        return deptDao.getAllDepartment();
    }

    @Cacheable(value="ORGANAZATION", key="#deptCode+'Child'")  
    public List getChildDepartment(String deptCode) {
        return deptDao.getChildDepartment(deptCode);
    }
    
    /*public List findCompanyCode(String companyCode) {
        List list = deptDao.searchCompanyCode(companyCode);
        return list;
    }*/
    
    public List findDeptCode(String deptCode) {
        List list = deptDao.searchDeptCode(deptCode);
        return list;
    }
}
 

CacheManager,spring缓存_第4张图片

 

maven依赖:


            net.sf.ehcache
            ehcache
        

你可能感兴趣的:(后端)