当前位置: 编程技术>软件工程/软件设计
本页文章导读:
▪Spring攻略学习笔记(13)------继承Bean配置 一:知识点
在Spring IoC容器中配置Bean时,可能拥有一个以上的共享某些公用配置的Bean,比如属性和<bean>元素中的属性。你常常需要为多个Bean重复这些配置。
&.........
▪paip.提升程序稳定性---最佳实践
paip.提升程序稳定性---最佳实践
作者Attilax , EMAIL:1466519819@qq.com
1.防止内存占用不断上升OutOfMemory退出..。特别重要,一定要做..
先用工具测试程序最终实际使用的内存值.得出.........
▪Forest 1.0 一个分布式服务和数据分片的开源框架发布 Forest
一个分布式服务和数据分片的开源框架发布,特点:
应用简单轻量级框架很容易自由扩展
源代码,详细介绍文档及例子:https://github.com/wtt2012/forest
Architecture
forest-core
核心API和基本.........
[1]Spring攻略学习笔记(13)------继承Bean配置
来源: 互联网 发布时间: 2013-11-19
一:知识点
在Spring IoC容器中配置Bean时,可能拥有一个以上的共享某些公用配置的Bean,比如属性和<bean>元素中的属性。你常常需要为多个Bean重复这些配置。
Spring允许你提取公用的Bean配置组成一个父Bean。从父Bean继承来的Bean称作子Bean。子Bean从父Bean继承Bean配置,包括Bean属性和<bean>元素中的属性,避免重复配置。子Bean在必要时也可以覆盖继承的配置。
父Bean可以作为配置模板,也可以同时作为Bean的一个实例。如果你希望父Bean只作为模板而不能检索,必须将abstract设置为true,要求Spring不要实例化这个Bean。
必须注意,并不是所有在父<bean>元素中定义的属性都将被继承。具体可参见Spring文档关于Bean继承的内容。
二、代码示例:
Bean配置文件:
<bean id="sequenceGenerator" class="com.jackie.codeproject.springrecipesnote.springioc.SequenceGenerator" > <property name="initial" value="100000" /> <property name="suffix" value="A" /> <property name="prefixGenerator" ref="datePrefixGenerator" /> </bean> <bean id="sequenceGenerator1" class="com.jackie.codeproject.springrecipesnote.springioc.SequenceGenerator" > <property name="initial" value="100000" /> <property name="suffix" value="A" /> <property name="prefixGenerator" ref="datePrefixGenerator" /> </bean> <bean id="datePrefixGenerator" class="com.jackie.codeproject.springrecipesnote.springioc.DatePrefixGenerator"> <property name="pattern" value="yyyyMMdd" /> </bean>为了避免重复相同的属性,可以用这些属性集声明一个基序列生成器。然后,两个序列生成器可以从这个基序列生成器中继承,这样它们自动拥有哪些属性集。如果子Bean和父Bean的class属性相同,就不需要指定。
<bean id="baseSequenceGenerator" class="com.jackie.codeproject.springrecipesnote.springioc.SequenceGenerator" > <property name="initial" value="100000" /> <property name="suffix" value="A" /> <property name="prefixGenerator" ref="datePrefixGenerator" /> </bean> <bean id="sequenceGenerator" parent="baseSequenceGenerator" /> <bean id="sequenceGenerator1" parent="baseSequenceGenerator" />继承的属性可以由子Bean覆盖。例如,可以添加不同初始值的子序列生成器。
<bean id="baseSequenceGenerator" class="com.jackie.codeproject.springrecipesnote.springioc.SequenceGenerator" > <property name="initial" value="100000" /> <property name="suffix" value="A" /> <property name="prefixGenerator" ref="datePrefixGenerator" /> </bean> <bean id="sequenceGenerator2" parent="baseSequenceGenerator" > <property name="initial" value="200000"></property> </bean>现在,基序列生成器Bean可以恢复为Bean实例使用。如果希望它仅作为模板,必须将abstract属性设置为true,则Spring不会实例化这个Bean,否则会抛异常。
<bean id="baseSequenceGenerator" abstract="true" class="com.jackie.codeproject.springrecipesnote.springioc.SequenceGenerator" > <property name="initial" value="100000" /> <property name="suffix" value="A" /> <property name="prefixGenerator" ref="datePrefixGenerator" /> </bean>你也可以忽略父Bean的类,让子Bean指定自己的类,特别是在父Bean与子Bean不在同一类层次结构但是共享同名属性的时候。在这种情况下,父Bean的abstract属性必须设置为true,因为父Bean不能实例化。例如,添加另一个也有initial属性的ReverseGenerator类。
public class ReverseGenerator { private int initial; public void setInitial(int initial) { this.initial = initial; } }现在,SequenceGenerator和ReverseGenerator不会扩展相同的基类,即他们不在相同的类层次机构中,但是具有同名的属性:initial。为了提取公共的initial属性,需要一个没有定义class属性的父Bean--------baseGenerator。
<bean id="baseGenerator" abstract="true"> <property name="initial" value="100000" /> </bean> <bean id="baseSequenceGenerator" abstract="true" parent="baseGenerator" > <property name="suffix" value="A" /> <property name="prefixGenerator" ref="datePrefixGenerator" /> </bean> <bean id="reverseGenerator" parent="baseGenerator" class="com.jackie.codeproject.springrecipesnote.springioc.ReverseGenerator" /> <bean id="sequenceGenerator" parent="baseSequenceGenerator" /> <bean id="sequenceGenerator1" parent="baseSequenceGenerator" /> <bean id="sequenceGenerator2" parent="baseSequenceGenerator" />
作者:jackiehff 发表于2013-4-22 23:08:48 原文链接
阅读:29 评论:0 查看评论
[2]paip.提升程序稳定性---最佳实践
来源: 互联网 发布时间: 2013-11-19
paip.提升程序稳定性---最佳实践
作者Attilax , EMAIL:1466519819@qq.com
1.防止内存占用不断上升OutOfMemory退出..。特别重要,一定要做..
先用工具测试程序最终实际使用的内存值.得出一个合理值
new memory().start();监测内存占用,当物理内存占用超过此值M时,调用SetProcessWorkingSetSize方法回收内存。
2.抛出线程,线程体内要TRY CATCH。。否则抛出EXP导至主程序OUT。。特别重要,一定要做..
3。PRPGRAM。CS内要TRY CATCH,发现主程序出问题,重启。。
4。PROGRAME。CS内增加UnhandledException 的捕获..
5.网络,文件操作一定要TRYCATCH。
6。一般不要使用一个统一的CATCH。特别针对JAVA。。注意FINALLY内部,也需要关闭一个资源,则一个TRY CATCH。
7.日志,缓存等文件,最好不要用一个文件,尽可能按时间生成多个文件。。可以防止万一个哪个文件句柄没被释放,也不会影响后面的文件写入。
参考:
paip.提升性能---C#.NET程序内存占用过多以及OutOfMemory解决方法
paip.程序不报错自动退出的解决 - attilax的专栏 - 博客频道 - CSDN.NET.htm
作者:attilax 发表于2013-4-23 8:46:04 原文链接
阅读:63 评论:0 查看评论
[3]Forest 1.0 一个分布式服务和数据分片的开源框架发布
来源: 互联网 发布时间: 2013-11-19
Forest
一个分布式服务和数据分片的开源框架发布,特点:
- 应用简单
- 轻量级框架
- 很容易自由扩展
源代码,详细介绍文档及例子:https://github.com/wtt2012/forest
核心API和基本实现,可是来创建一个分布式服务,例如Redis/Memecached 集群,也可以创建一个数据分片服务,像数据库水平和垂直(纵向横向)扩展服务。
forest-core 目前支持分片的精确匹配和范围匹配来实现。例子:
- example
- range match example
- Basic Server Example
- Basic Server Example
- Pooled Server Example
- Another Pooled Server Example
- test example
基于forest-core实现了一个连接池化的数据库分片服务。这里有很多例子可以学习sharding example.
maven dependency
add repository
<repository> <id>fengfei-repo</id> <name>fengfei Repository </name> <url>http://fengfei.googlecode.com/svn/maven-repo/releases</url> </repository> <repository> <id>fengfei-snapshot</id> <name>fengfei Repository </name> <url>http://fengfei.googlecode.com/svn/maven-repo/snapshots</url> </repository>
use it as a maven dependency:
<dependency> <groupId>fengfei.forest</groupId> <artifactId>forest-core</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
or
<dependency> <groupId>fengfei.forest</groupId> <artifactId>forest-database</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
作者:myloon 发表于2013-4-23 11:12:51 原文链接
阅读:87 评论:0 查看评论
最新技术文章: