当前位置: 首页 > news >正文

个人简历网站开发自助网站建设公司电话

个人简历网站开发,自助网站建设公司电话,网页排版怎么设置,设计公司网站的要点缓存查询 Ehcache中为我们提供了可以对Cache中缓存的元素进行查找的方式。其逻辑类似于SQL中的查找。通过给定各种限制条件#xff0c;我们可以构造各种复杂的查询#xff0c;然后返回结果集#xff0c;也可以对查询进行分组和排序等。 使Cache可查询 Ehcache中的查询是针…缓存查询 Ehcache中为我们提供了可以对Cache中缓存的元素进行查找的方式。其逻辑类似于SQL中的查找。通过给定各种限制条件我们可以构造各种复杂的查询然后返回结果集也可以对查询进行分组和排序等。 使Cache可查询 Ehcache中的查询是针对于Cache而言的。但并不是所有的Cache都可以进行查询操作我们需要指定其为一个可查询的Cache之后才可以对该Cache进行查询操作。因为在配置Cache的时候有基于xml文件的配置和基于程序代码的配置所以对应的使一个Cache可查询也有两种方式。 基于Xml配置 当我们的Cache定义是基于Xml文件的配置时我们只需在对应Cache定义下声明一个子元素searchable即可使当前Cache拥有可查询的功能。 Xml代码 cache namesearchableCache maxBytesLocalHeap100M searchable/ /cache 基于代码的配置 基于代码的配置是通过新建Searchable对象然后指定需要设置为可查询Cache对应的CacheConfiguration的Searchable对象为我们新建的Searchable对象即可。 Java代码 public void test() { CacheManager cacheManager CacheManager.create(); CacheConfiguration cacheConfig new CacheConfiguration(); cacheConfig.name(cache1).maxBytesLocalHeap(100, MemoryUnit.MEGABYTES); Searchable searchable new Searchable(); //指定Cache的Searchable对象。 cacheConfig.searchable(searchable); //如下指定也行 // cacheConfig.addSearchable(searchable); Cache cache1 new Cache(cacheConfig); cacheManager.addCache(cache1); } 指定可搜索的属性 配置了Cache可查询后我们还需要配置当前Cache可以对哪些属性进行查询即可以把哪些属性作为条件来对Cache进行查询。在Ehcache中使用一个net.sf.ehcache.search.Attribute来表示一个可查询的属性。这些可查询的属性可以是我们的key、value或者它们对应的属性。定义可查询属性是通过searchable元素的子元素searchAttribute来定义的如 Xml代码 cache nameuserCache maxBytesLocalHeap50M searchable searchAttribute namename/ /searchable /cache 其中name表示我们所定义的可查询属性的名称是必须指定的属性。这里会通过属性提取机制提取key或者value中name所对应的属性这里是name属性来进行索引。关于属性提取机制将在后续讲解。 可查询属性类型 一下属性都可以用来作为Cache的可查询属性它必须是以下类型之一 BooleanByteShortCharacterIntegerLongFloatDoubleStringjava.util.Datejava.sql.DateEnum 可查询/可索引能力定义 默认情况下系统会自动把我们存入可查询Cache中元素的key和value作为可查询属性命名为key和value当它们是以上可查询类型时我们可以直接对它们进行查询。 如果不需要默认将我们的key和value作为可查询属性的话我们可以在指定Cache为一个可查询Cache时指定searchable元素的keys属性和values属性为false即可。如 Xml代码 cache namesearchableCache maxBytesLocalHeap100M . searchable keysfalse valuesfalse/ /cache 属性的提取 当我们的key或者value不是可查询类型然而我们又希望对它们进行查询时我们就需要把key或者value中的属性提取出来作为Cache的一个可查询属性。这是通过AttributeExtractor来进行的AttributeExtractor是一个接口其中只定义了一个方法Object attributeFor(Element element, String attributeName)。其返回值必须是可查询属性类型之一。当然返回null也是可以的。下面我们来看看如何定义自己的AttributeExtractor。 定义自己的AttributeExtractor 假设我们有一个名叫userCache的缓存其中存放的元素值都是一个User对象。而我们的User对象有一个String类型的name属性。假设我们现在指定了我们的userCache的一个可查询属性为user而其真正对应的内容是我们的Element中存放的value的name。那么这个时候我们的AttributeExtractor实现大概会是这个样子 Java代码 public class UserAttributeExtractor implements AttributeExtractor { Override public Object attributeFor(Element element, String attributeName) throws AttributeExtractorException { User user (User) element.getObjectValue(); return user.getName(); } }定义好了AttributeExtractor之后我们要告诉Ehcache缓存userCache的可查询属性user对应的AttributeExtractor是我们定义的UserAttributeExtractor这只需要指定searchAttribute元素的class属性即可。 Xml代码 cache nameuserCache maxBytesLocalHeap50M searchable searchAttribute nameuser classcom.xxx.UserAttributeExtractor/ /searchable /cache 之后我们通过user属性来查询时就可以通过User对象的name属性来过滤一些结果集了。如果我们的AttributeExtractor还需要接收其它的参数的话我们可以通过searchAttribute元素的properties属性来指定其对应的参数是键值对的形式中间用等号“”隔开多个参数之间用逗号隔开。如 Xml代码 cache nameuserCache maxBytesLocalHeap50M searchable searchAttribute nameuser classcom.xxx.UserAttributeExtractor propertiesa1,b2/ /searchable /cache 指定了properties属性后我们对应的AttributeExtractor必须给定一个以Properties对象为参数的构造方法才可以接收到这些指定的参数。 除了定义自己的属性提取实现类之外Ehcache还为我们提供了一些实现类。包括KeyObjectAttributeExtractor、ValueObjectAttributeExtractor这两个属性提取器就是默认情况下Ehcache用来把key和value提取为一个可查询属性的方式。此外还有JavaBeanAttributeExtractor和ReflectionAttributeExtractor。 JavaBeanAttributeExtractor 当定义一个可查询属性searchAttribute只指定其name属性系统所使用的AttributeExtractor就是JavaBeanAttributeExtractor。该AttributeExtractor会从元素的key或者value中取searchAttribute的name属性值所对应的属性。 如果我们有如下这样一个可查询缓存的定义Ehcache在给可查询属性address建立索引时就会获取元素key的address属性或者value的address属性来作为查询属性address的值。 Xml代码 cache namesearchableCache maxBytesLocalHeap100M searchable keysfalse valuesfalse searchAttribute nameaddress/ /searchable /cache 注意使用JavaBeanAttributeExtractor时如果key和value中都包含可查询属性则系统会抛出异常如果都不包含的话也会抛出异常。 ReflectionAttributeExtractor 当我们定义一个可查询属性searchAttribute时指定了expression属性时系统就会使用ReflectionAttributeExtractor来提取属性的值。此属性提取器是通过反射来提取属性值的。expression必须以key、value或element开始然后中间以点“.”来连接它们所对应的属性或方法以及属性的属性方法的方法。key表示元素的keyvalue表示元素的valueelement表示元素本身。 配置案例 查询属性address的值是对应的value的address属性。 Xml代码 cache namesearchableCache maxBytesLocalHeap100M searchable keysfalse valuesfalse searchAttribute nameaddress expressionvalue.address/ /searchable /cache 查询属性address的值是对应的value的extraInfo属性的getAddress()方法的返回值。 Xml代码 cache namesearchableCache maxBytesLocalHeap100M searchable keysfalse valuesfalse searchAttribute nameaddress expressionvalue.extraInfo.getAddress()/ /searchable /cache 3.查询属性hitCount的值是对应的element的getHitCount()方法的返回值。 Xml代码 cache namesearchableCache maxBytesLocalHeap100M searchable keysfalse valuesfalse searchAttribute namehitCount expressionelement.getHitCount()/ /searchable /cache DynamicAttributesExtractor 上面介绍的AttributeExtractor都是在Cache实例化之前定义的其会在Cache实例化时初始化这些可查询属性。而DynamicAttributesExtractor允许我们在Cache实例化后添加可查询属性。 实现原理 DynamicAttributesExtractor是一个接口它跟AttributeExtractor接口没有任何关系。该接口中仅定义了一个方法attributesFor()该方法将接收一个Element对象作为参数然后返回一个将作为可查询属性的Map该Map的key对应可查询属性的名称而value则对应可查询属性的值。那么我们在实现DynamicAttributesExtractor接口时只需要实现attributesFor()方法即可。 使用DynamicAttributeExtractor时我们的Cache对应的Searchable必须是支持该提取器才行这是通过Searchable对象的allowDynamicIndexing属性来指定的使用xml配置时该属性是直接配置在searchable元素上的而使用程序来定义时则需要通过Searchable对象来指定了。 之后我们需要把它注册给我们的Cache。通过Cache的registerDynamicAttributesExtractor()方法我们就可以给Cache注册一个动态的属性提取器了该提取器将在往Cache中put或者replace元素时被调用。 xml代码 cache nameuserCache maxBytesLocalHeap50M searchable allowDynamicIndexingtrue searchAttribute namename expressionvalue.getName()/ /searchable /cache 上面定义了如下这样一个专门用来缓存User的Cache其中User中含有属性name。我们在定义该Cache的时候即指定了其是一个可查询的Cache同时通过指定allowDynamicIndexing为true使其支持动态属性提取我们还给该Cache指定了一个可查询属性name。
http://www.w-s-a.com/news/698996/

相关文章:

  • 东莞企业免费模版网站建设一般网站维护要多久
  • 著名建筑设计网站常州制作网站价格
  • 食品营销型网站广东省广州市白云区
  • 如何做网站哪个站推广描述对于营销型网站建设很重要飘红效果更佳
  • 济阳做网站公司99企业邮箱888
  • 国贸做网站的公司能接做网站的活的网站
  • 淮南建设厅网站上杭县建设局网站
  • 东莞做网站公司首选!西安注册公司费用
  • 做网站包括什么卖水果网站模板
  • 扬州网站建设外包wordpress 文章评分
  • 网站建设网站多少钱公司名字大全列表
  • 设计企业网站内容wordpress 投稿者 权限
  • seo网站推广免费价格低的成语
  • 做网站建设销售辛苦吗专题页是什么
  • 做网站的软件名字全拼wordpress可以上传文件吗
  • 建品牌网站公司关于asp_sql网站开发的书籍
  • 建网站公司营销型网站建设wordpress自定义登录页
  • 泉州市住房和城乡建设局网站淘宝店网站怎么做
  • 企业网站建设费未付款怎样挂账长春网站制作专业
  • 深圳找网站建设邹城市建设局网站
  • 长春火车站停运了吗网站开发概要设计
  • 网站开发表格整体页面居中网站域名详解
  • 漕泾网站建设赢展网站建设
  • 医院网站建设的要求毕业了智慧团建密码忘了
  • 网站怎么建设在哪里接单坪山商城网站建设哪家便宜
  • 中山企业网站优化易语言wordpress发布
  • 宜昌网站推广自己怎么做彩票网站吗
  • 英文网站建设 招标网站建设中服务器搭建方式
  • 直播网站建设需要什么软件有哪些室内设计效果图怎么做
  • 宁波网站建设电话网络推广外包一年多少钱