package com.huixinpn.dionysus.service.impl; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import com.huixinpn.dionysus.domain.chat.Room; import com.huixinpn.dionysus.repository.chat.RoomRepository; import com.huixinpn.dionysus.service.RoomService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.concurrent.TimeUnit; /** * Created by huanghao on 7/13/15. */ @Service public class SimpleRoomService implements RoomService { @Autowired private RoomRepository roomRepository; private LoadingCache<String, Room> roomLoadingCache = CacheBuilder.newBuilder() .expireAfterAccess(10, TimeUnit.MINUTES) .build(new CacheLoader<String, Room>() { @Override public Room load(String key) throws Exception { return roomRepository.findOne(new Long(key)); } }); public Room getRoom(String id){ try{ Room room = this.roomLoadingCache.get(id); return room; }catch (Exception e){ return null; } } }