承接上文

自定义对象行为


.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" />

javaCsharp的共同点

  1. IObjectFactoryAware|BeanFactoryAware以及IObjectNameAware|BeanNameAware
    实现的接口的属性或者方法会在容器初始化完成后spring自动调用赋值,只要更改方法体即可
  2. IInitializingObject|InitializingBean接口的AfterPropertiesSet方法
    在属性赋值完成后调用,也可以用init-method节点来和spring框架解耦
  3. IDisposable|DisposableBean接口的destroy方法在对象释放的时候调用,
    也可以用destroy-method节点来和spring框架解耦
  4. IFactoryObject|FactoryBean为创建一个工厂类,
    通过id调用Ioc容器的时候返回的是getObject方法的返回值不是工厂类,
    前一章节的获取对象的属性就是继承了这个接口,isSingleton返回这个对象是不是单例,
    ObjectType|getObjectType返回对象类型
  5. IObjectFactoryAware|BeanFactoryAware获取当前Ioc的容器
  6. IObjectNameAware|BeanNameAware获取对象在容器里面的名称

Ⅶ.spring的点点滴滴--自定义对象行为的更多相关文章

  1. Ⅷ.spring的点点滴滴--抽象对象和子对象

    承接上文 抽象对象和子对象 .net篇(环境为vs2012+Spring.Core.dll v1.31) public class parent { public string Name { get; ...

  2. Ⅵ.spring的点点滴滴--自定义类型转换器

    承接上文 自定义类型转换器 .net篇(环境为vs2012+Spring.Core.dll v1.31) public class CustomeConverter : TypeConverter{ ...

  3. Ⅹ.spring的点点滴滴--IObjectPostProcessor(对象后处理器)

    承接上文 IObjectPostProcessor(对象后处理器) 前提是实现接口的对象注册给当前容器 C#: 通过继承AbstractObjectFactory对象的AddObjectPostPro ...

  4. Spring Data JPA 自定义对象接收查询结果集

    Spring Data JPA 简介 Spring Data JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据库的访问和 ...

  5. Ⅴ.spring的点点滴滴--引用其他对象或类型的成员

    承接上文 引用其他对象或类型的成员 .net篇(环境为vs2012+Spring.Core.dll v1.31) public class Person { public string Name { ...

  6. XI.spring的点点滴滴--IObjectFactoryPostProcessor(工厂后处理器)

    承接上文 IObjectFactoryPostProcessor(工厂后处理器)) 前提是实现接口的对象注册给当前容器 直接继承的对象调用这个postProcessBeanFactory方法,参数为工 ...

  7. Ⅸ.spring的点点滴滴--IObjectFactory与IFactoryObject的杂谈

    承接上文 ObjectFactory与IFactoryObject的杂谈 .net篇(环境为vs2012+Spring.Core.dll v1.31) public class parent { pu ...

  8. Ⅱ.spring的点点滴滴--对象

    承接上文 对象的各种实例化 .net篇(环境为vs2012+Spring.Core.dll) 修改原来的PersonDao对象为 public class PersonDao : IPersonDao ...

  9. 第四章 Spring.Net 如何管理您的类___自定义对象行为

    Spring.Net 一直讲求 ” 配置应用程序“,有一种需求在实际开发中不太常用,却非常有用 -> 配置对象的行为,Spring.Net 也能够完美的实现.Spring.Net 通过几个专门的 ...

随机推荐

  1. Linux内存初始化

    start_kernel -> setup_arch 在这个函数中我们主要看这几个函数. machine_specific_memory_setup max_low_pfn = setup_me ...

  2. MySQL配置文件-my.ini

    下面允许我介绍一下MySQL的my.ini配置文件: my.ini是什么? my.ini是MySQL数据库中使用的配置文件,修改这个文件可以达到更新配置的目的. my.ini存放在哪里? my.ini ...

  3. [编译] g++ 与 Makefile

    g++ -c CppSoureFile -o ObjectCodeFile -c 编译而不链接 -lm 链接数学库 -static 生成静态链接的程序

  4. BrnShop开源网上商城第五讲:自定义视图引擎

    今天这篇博文主要讲解自定义视图引擎,大家都知道在asp.net mvc框架中默认自带一个Razor视图引擎,除此之外我们也可以自定义自己的视图引擎,只需要实现IViewEngine接口,接口定义如下: ...

  5. diamond专题(三)—— diamond架构

    大家好,这次为大家带来的是diamond的架构,架构如下图所示: 对该图进行一些说明: 1.作为一个配置中心,diamond的功能分为发布和订阅两部分.因为diamond存放的是持久数据,这些数据的变 ...

  6. Zend Studio 或者Eclipse下安装插件Spket(以Zend为例)

    1. Help>Install New Software... 2. 在Work With:后输入网址 http://www.agpad.com/update,点击Add 3. 输入Name:S ...

  7. https原理:证书传递、验证和数据加密、解密过程解析

    写的太好了,就是我一直想找的内容,看了这个对https立马明白多了 http://www.cnblogs.com/zhuqil/archive/2012/07/23/2604572.html 我们都知 ...

  8. 教程-隐藏/显示任务栏-程序不在任务显示-全面控制Windows

    1.隐藏任务条 var  h:THandle; //变量h:=FindWindow('Shell_TrayWnd',nil);ShowWindow(h,SW_hide); 2.显示任务条h:=Find ...

  9. A Tour of Go If and else

    Variables declared inside an if short statement are also available inside any of the else blocks. pa ...

  10. java_list<String> string[]拼接json

    private String getJsonStr(List<String> jsonKeyList, String[] values){ String jsonStr = "{ ...