Ⅶ.spring的点点滴滴--自定义对象行为
承接上文
自定义对象行为
.net篇(环境为vs2012+Spring.Core.dll v1.31)
public class lifeCycle :
Spring.Objects.Factory.IInitializingObject,
System.IDisposable,
Spring.Objects.Factory.IObjectFactoryAware,
Spring.Objects.Factory.IObjectNameAware
{
public Spring.Objects.Factory.IObjectFactory OFactory { get; set; }
public String Name { get; set; }
public void initMethod(){}
public void destroyMethod() {}
public void AfterPropertiesSet(){
initMethod();
}
public void Dispose(){
destroyMethod();
}
public Spring.Objects.Factory.IObjectFactory ObjectFactory{
set { OFactory = value; }
}
public string ObjectName{
set { Name = value; }
}
}
public class CustomFactory :
Spring.Objects.Factory.IFactoryObject
{
public object GetObject(){
return "1";
}
public bool IsSingleton{
get { return false; }
}
public Type ObjectType{
get { return typeof(string); }
}
}<object id="lifeCycle"
type="SpringBase.lifeCycle, SpringBase"
init-method="initMethod"
destroy-method="destroyMethod" />
<object id="customFac" type="SpringBase.CustomFactory, SpringBase"/>
java篇(环境为Maven+Jdk1.7+IntelliJ IDEA 12.1.4)
package springdemo;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.*;
public class LifeCycle implements
InitializingBean,
DisposableBean,
BeanFactoryAware, BeanNameAware {
private BeanFactory oFactory;
private String name;
public void initMethod(){}
public void destroyMethod() {}
@Override
public void afterPropertiesSet() throws Exception {
initMethod();
}
@Override
public void destroy() throws Exception {
destroyMethod();
}
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
oFactory=beanFactory;
}
@Override
public void setBeanName(String name) {
this.name=name;
}
public String getName() {
return name;
}
public BeanFactory getoFactory() {
return oFactory;
}
}
class CustomFactory implements FactoryBean<String>{
@Override
public String getObject() throws Exception {
return "1";
}
@Override
public Class<?> getObjectType() {
return String.class;
}
@Override
public boolean isSingleton() {
return false;
}
}<bean id="lifeCycle" class="springdemo.LifeCycle"
init-method="initMethod"
destroy-method="destroyMethod" />
<bean id="customFac" class="springdemo.CustomFactory" />
java和Csharp的共同点
- IObjectFactoryAware|BeanFactoryAware以及IObjectNameAware|BeanNameAware
实现的接口的属性或者方法会在容器初始化完成后spring自动调用赋值,只要更改方法体即可- IInitializingObject|InitializingBean接口的AfterPropertiesSet方法
在属性赋值完成后调用,也可以用init-method节点来和spring框架解耦- IDisposable|DisposableBean接口的destroy方法在对象释放的时候调用,
也可以用destroy-method节点来和spring框架解耦- IFactoryObject|FactoryBean为创建一个工厂类,
通过id调用Ioc容器的时候返回的是getObject方法的返回值不是工厂类,
前一章节的获取对象的属性就是继承了这个接口,isSingleton返回这个对象是不是单例,
ObjectType|getObjectType返回对象类型- IObjectFactoryAware|BeanFactoryAware获取当前Ioc的容器
- IObjectNameAware|BeanNameAware获取对象在容器里面的名称
- 下一篇:Ⅷ.spring的点点滴滴--抽象对象和子对象
- 上一篇:Ⅵ.spring的点点滴滴--自定义类型转换器
- 本文链接地址:Ⅶ.spring的点点滴滴--自定义对象行为
Ⅶ.spring的点点滴滴--自定义对象行为的更多相关文章
- Ⅷ.spring的点点滴滴--抽象对象和子对象
承接上文 抽象对象和子对象 .net篇(环境为vs2012+Spring.Core.dll v1.31) public class parent { public string Name { get; ...
- Ⅵ.spring的点点滴滴--自定义类型转换器
承接上文 自定义类型转换器 .net篇(环境为vs2012+Spring.Core.dll v1.31) public class CustomeConverter : TypeConverter{ ...
- Ⅹ.spring的点点滴滴--IObjectPostProcessor(对象后处理器)
承接上文 IObjectPostProcessor(对象后处理器) 前提是实现接口的对象注册给当前容器 C#: 通过继承AbstractObjectFactory对象的AddObjectPostPro ...
- Spring Data JPA 自定义对象接收查询结果集
Spring Data JPA 简介 Spring Data JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据库的访问和 ...
- Ⅴ.spring的点点滴滴--引用其他对象或类型的成员
承接上文 引用其他对象或类型的成员 .net篇(环境为vs2012+Spring.Core.dll v1.31) public class Person { public string Name { ...
- XI.spring的点点滴滴--IObjectFactoryPostProcessor(工厂后处理器)
承接上文 IObjectFactoryPostProcessor(工厂后处理器)) 前提是实现接口的对象注册给当前容器 直接继承的对象调用这个postProcessBeanFactory方法,参数为工 ...
- Ⅸ.spring的点点滴滴--IObjectFactory与IFactoryObject的杂谈
承接上文 ObjectFactory与IFactoryObject的杂谈 .net篇(环境为vs2012+Spring.Core.dll v1.31) public class parent { pu ...
- Ⅱ.spring的点点滴滴--对象
承接上文 对象的各种实例化 .net篇(环境为vs2012+Spring.Core.dll) 修改原来的PersonDao对象为 public class PersonDao : IPersonDao ...
- 第四章 Spring.Net 如何管理您的类___自定义对象行为
Spring.Net 一直讲求 ” 配置应用程序“,有一种需求在实际开发中不太常用,却非常有用 -> 配置对象的行为,Spring.Net 也能够完美的实现.Spring.Net 通过几个专门的 ...
随机推荐
- 令人头疼的clientTop、scrollTop、offsetTop
1.网络上流传的图片 2.稍微容易理解点的示意图 参考链接:http://blog.csdn.net/lidiansheng/article/details/7950751 3.言简意赅的示意图 4. ...
- 【HDOJ】1756 Cupid's Arrow
图论,点在多边形内部的判定. /* 1756 */ #include <iostream> #include <string> #include <map> #in ...
- 六月计划#2A(6.10-6.16)
17/35 STL BZOJ_1588_&_Codevs_1296_[HNOI2002]_营业额统计(平衡树/set)(set重做) BZOJ_1208_&_Codevs_1258_[ ...
- LFS 中文版手册发布:如何打造自己的 Linux 发行版
您是否想过打造您自己的 Linux 发行版?每个 Linux 用户在他们使用 Linux 的过程中都想过做一个他们自己的发行版,至少一次.我也不例外,作为一个 Linux 菜鸟,我也考虑过开发一个自己 ...
- [HDU 1963] Investment
Investment Time Limit:10000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Descrip ...
- BrnShop开源网上商城第六讲:扩展视图功能
在正式讲解扩展视图功能以前,我们有必要把视图的工作原理简单说明下.任何一个视图都会被翻译成一个c#类,并保存到指定的位置,然后被编译.这也就是为什么能在视图中包含c#代码片段的原因.下面我们通过一个项 ...
- 【HTML】Advanced1:Text: Time, Mark, and "Presentational"
1.Exploring the depths of HTML5 2.</time> <p>Written by Doctor Who on <time datetime= ...
- nyoj 找球号三(除了一个数个数为基数,其他为偶数,编程之美上的)
#include<iostream> #include<stdio.h> using namespace std; int main() { int len; while(ci ...
- c++ de-mangle 反编译器命名工具:c++filt
nm *.so | c++filt c++filt symblo
- mac os的android开发国内库下载地址
http://ubuntu.buct.edu.cn/android/repository/