Ⅶ.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 通过几个专门的 ...
随机推荐
- 【HDOJ】1050 Moving Tables
贪心问题,其实我觉得贪心就是合理的考虑最优情况,证明贪心可行即可.这题目没话多久一次ac.这道题需要注意房间号的奇偶性.1 3.2 4的测试数据.答案应该为20. #include <stdio ...
- SpeeDO —— 并行深度学习系统
SpeeDO —— 并行深度学习系统 摘要: 最近,AlphaGo又带起了一波深度学习的热潮.深度学习在很多领域都大幅提高了模型的精度,使得很多以前在实验室中的技术得以运用到日常的生活之中.然而, ...
- Delphi开发嵌入IE的OCX,调用页面上JavaScript的方法
利用Delphi的ActiveForm,可以很方便地开发出可以嵌入IE的ActiveX组件,无需知道太多幕后的COM知识.如何使得OCX可以很方便地调用Web上的JavaScript函数呢,研究了一个 ...
- spring--注解注入--12
12.1 概述 12.1.1 什么是零配置 在SSH集成一章中大家注意到项目结构和包结构是不是很有规律,类库放到WEB-INF/lib文件夹下,jsp文件放到WEB-INF/jsp文件夹下,web ...
- Hierarchy--分层。单词意思即为分层视图。
英文释义:Hierarchy--分层.单词意思即为分层视图. 功能:层次Viewer允许你调试和优化您的用户界面.还可以学习别人做好的UI界面,它提供了一个布局的视图层次结构(布局视图)的视觉表现和放 ...
- 【原】SparkContex源码解读(一)
版权声明:本文为原创文章,未经允许不得转载. SparkContext(简称sc)是Spark程序的主入口,代表一个连接到Spark集群(Standalone.YARN.Mesos三种集群部署模式)的 ...
- 2015年10月22日CSS学习笔记
XHTML1.0对HTML4.0的改进 借鉴了XML的写法,语法更加严格. 把页面的内容和样式分离了,废弃了html4中的表示样式的标签和属性.推荐使用css来描述页面的样式. CSS样式的优先级 ! ...
- Linux下简单的socket通信实例
Linux下简单的socket通信实例 If you spend too much time thinking about a thing, you’ll never get it done. —Br ...
- vijosP1371 方程的解
vijosP1371 方程的解 链接:https://vijos.org/p/1371 [思路] 组合公式+快速幂+高精单精. 求x^x %1000:因为x最大为2^31-1所以用快速幂在O(logx ...
- vijosP1289 老板娘的促销方案
vijosP1289 老板娘的促销方案 链接:https://vijos.org/p/1289 [思路] 组合公式+高精度. 如果n-m<2则无解. 否则对于第一个询问:ans=C(n-m,2) ...