愤怒中的小草

博客园 首页 新随笔 联系 订阅 管理

2018-4-28 19:30-21:25

场景:A项目运行的时候,从B项目通过rabbitmq发消息过来,A项目缓存没有起作用。
分析:1. A项目启动后,没有加载缓存
2. 通过接口调用并没有去查数据库加载缓存
验证:
配置:
<!-- 本地使用缓存 -->
<bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" p:name="keyCache" />
使用类:
@Component
public class ServiceImpl {
@Autowired
private KeyCache keyCache;
@Override
public String Data(String id) {
System.out.println("id= "+id);
String Value = keyCache.get(id);
}
}
加载类:
@Component
public class KeyCache {
@Autowired
private Table table;

@Cacheable(value = "keyCache", key = "#key")
public Analyze get(String key) {
System.out.println("key= "+key);
table str = table.findOne(key);
}
}
总结:
1. srping 2.5引入@Autowired 注释,可以对类的成员变量、方法及构造函数进行标注,完成自动装配的工作
@Autowired的使用用来消除set/get方法
2. @Service 注解,添加到类上,减少bean的配置
ApplicationContext应用上下文在加载配置文件的时候,如果配置文件开启了自动扫描<context:component-scan base-package="package"/>
类上有@Service系统会自动classloader到jvm中。使用直接getbean即可。
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("service.xml");
KeyCache kc = (KeyCache) context.getBean("keyCache");
kc.get("1234");
kc.get("1234");
ServiceImpl si = (ServiceImpl) context.getBean("serviceImpl");
try {
si.Data("1234");
} catch (Exception e) {
e.printStackTrace();
}
}

结束语:相思换凄凉

posted on 2018-04-28 21:28  愤怒中的小草  阅读(95)  评论(0编辑  收藏  举报