J2EE之巅

 

最新评论

共2页: 1 2 下一页 
re: 自己实现IoC,AOP容器-下载问题 蔡超 2008-07-07 13:23  
可以下载,我试了
你再试试
re: DAO模式最佳实践 如坐春风 2008-06-27 11:08  
论点不错,咋不详细阐述一下呢?
re: DAO模式最佳实践 一脸大鼻涕 2008-06-26 22:37  
我怎么看文章的意思好像是不要在dao中处理异常捏?
re: DAO模式最佳实践 人体艺术 2008-06-25 23:14  
对,DAO中的异常处理非常重要,初学者往往会忽略,造成数据的完整性出现问题。
ZCXzFdsgcvcxzgsags
re: 自己实现IoC,AOP容器 源码下载 chaocai 2008-06-19 08:22  
re: 自己实现IoC,AOP容器 源码下载 chaocai 2008-06-19 08:22  
@fantasybei
那个包确实有问题请从这里下载
http://www.blogjava.net/Files/chaocai/mini-container-beta-0.9-a.rar
re: 自己实现IoC,AOP容器 源码下载 fantasybei 2008-06-18 18:57  
我导入到eclipse里,怎么不能识别这个jar包?
re: 自己实现IoC,AOP容器[未登录] sdfsd 2008-06-05 10:27  
等待open source
re: 自己实现IoC,AOP容器 源码下载 Happy漫步者 2008-05-28 11:25  
可以学习下 支持^_^
28359467
re: 自己实现IoC,AOP容器 origo 2008-05-27 15:49  
是否可以共享源代码
re: 自己实现IoC,AOP容器 蔡超 2008-05-27 10:38  
Mini-Contaiiner具有以下特性:

1 轻量级的IoC容器,Mini-Container目前的版本使用和部署都十分简单,仅一个jar文件,mini-container.jar,

2 简单AOP支持,可以对组件提供的服务方法进行拦截, 加入自定义拦截器。

3 SOA in JVM,将SOA的思想融入其中,每个组件(component)声名自己可以提供的服务(service),这种服务通过Java interface进行定义及描述。各组件同时声明运行时所需依赖的服务(reference),容器会根据配置自动为该组件连接所需服务的提供者。

4 支持与其他Framework的整合,目前mini-container可以与spring进行整合。

Cardinality属性

通过将该属性设置为”1..n”,我们可以将多个服务提供者注入到依赖当中


争取很快整理好源码后,发布给大家,希望对大家有用!

re: 自己实现IoC,AOP容器 hejianhuacn 2008-05-27 10:29  
跟其它IOC框架比较,功能有什么不同?还是实现方式不同?使用这个容器跟使用其它容器比,有什么好处?
re: 自己实现IoC,AOP容器 于翔 2008-05-27 09:54  
呵呵,有时间好好研究下这个,对理解IOC和AOP很有帮助!
re: 自己实现IoC,AOP容器 Jie 2008-05-27 01:38  
先顶下,有时间好好看看。
re: 自己实现IoC,AOP容器 叶澍成 2008-05-26 22:23  
还是很期待看到source
你自己测试了吗
re: 终于通过了SCEA5 Beta版的考试 叶澍成 2008-02-24 10:24  
恭喜了
怎么参加啊?
在网上还是中软大厦啊?
给各网址
谢谢
为什么我按照你这样的方法写不可以呢?
能否帮我看一下,
http://www.javaeye.com/topic/149158
小弟先谢过了。
re: Spring2.5的组件自动搜索 BeanSoft 2007-12-04 19:24  
姓名: 蔡超 生日: 1976-09-03 总结: 六年大企业软件开发经验(其中两年任软件架构师),精通J2EE相关技术及架构设计,是SUN及Microsoft培训中心特邀高端讲师 SUN认证的J2EE架构师(SCEA) SUN认证的商务组件开发员(SCBCD) IBM认证的RUP专家 IBM认证的OOA&D (UML v2)专家




对于annotation的支持和组件的配置方式是扩充是spring2.5的主要提升之一。其中组件在类路径下的自动搜索功能也是一项值得注意的新增特性。
现来看个示例:

图表 1 示例中涉及的类的关系
Command.java:
package org.ccsoft.commands.imp;

public interface Command {
public void execute();
}

CommandExecuter.java:
package org.ccsoft.commands.imp;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
@Component("commandExecuter")
public class CommandExecuter {
private Command command;
@Autowired

public void setCommand(/*@Qualifier("helloCommand")*/ Command command) {
this.command = command;
}
public void executeCommand(){
command.execute();
}
}

HelloCommand.java
package org.ccsoft.commands.imp;

import org.springframework.stereotype.Component;


@Component
public class HelloCommand implements Command{
public void execute() {
System.out.println("Hello World");
}
}

配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"" target="_new">http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"" target="_new">http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">

<context:component-scan base-package="org.ccsoft"/>
</beans>

测试程序如下:
package org.ccsoft;

import org.ccsoft.commands.imp.CommandExecuter;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import junit.framework.TestCase;

public class TestCommandExecuter extends TestCase {
public void testExecuteCommand(){
ApplicationContext ctx=new ClassPathXmlApplicationContext("application.xml");
CommandExecuter exe=(CommandExecuter) ctx.getBean("commandExecuter");
exe.executeCommand();
}
}
可以从配置文件中发现,这次并没有像常规的方式那样,声明所使用的bean,只是说明了组件搜索的基路径(便于减少搜索范围)“<context:component-scan base-package="org.ccsoft"/>”。
要点:
1 用@Component来声明每个组件,而不是通过配置文件中的bean元素
2 在需要注入其他组件的地方使用@Autowired,默认情况下会按类型进行依赖关系的查找和注入
3 可以指定组件的Id,通过@Component的值,如:@Component("commandExecuter"),这样类似于<bean id=” commandExecuter”…,注意如果不注明该值,spring将使用默认的命名规则,即类的名字但首字母小写,所以在上例中将@Component("commandExecuter")改写为@Component同样是可以运行的。

代码试验二:
在上面工程中加入新的Command接口实现类SorryCommand.
package org.ccsoft.commands.imp;

import org.springframework.stereotype.Component;
@Component
public class SorryCommand implements Command {

public void execute() {
// TODO Auto-generated method stub
System.out.println("Sorry");
}

}
再运行测试程序,会发现程序无法运行,抛出以下异常org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [org.ccsoft.commands.imp.Command] is defined: expected single matching bean but found 2: [helloCommand, sorryCommand]
这是因为根据类型的方式搜索,找到了两个相符的依赖类,这是我们必须指明使用那个组件。
@Autowired

public void setCommand(@Qualifier("helloCommand") Command command) {
this.command = command;
}
要点:
4 在多个同类组件存在于查找路径时必须通过@Qualifier指明

不知为什么,spring的这一新特性总让我联想起OSGi DS,不过与OSGi DS相比个人认为spring的IoC还是有些不便的地方,OSGi DS的Service的引用策略中的Cardinality可以指定组件的注入策略,可以支持将多个符合条件的组件多次注入,这为编写组件容器这样的应用提供了很大的便利。
如:

private List<Command> commands;

public void setCommand(Command cmd){
commands.add(cmd);
}

….

最后,这里只是涉及了spring2.5中相关内容中非常少的一点,如果大家有兴趣深入了解可以参考spring reference。
个人认为在大家充分享受新特性带来的便利的同时也要主要到新特性是否会对应用的可维护性和部署时改变注入关系的方便性带来负面影响。



蔡超
JavaEE 咨询顾问
SCEA
IBM Certified Solution Designer for OOA&D UML2




Tags: Spring OSGi

re: 帮自己的另一个Blog拉拉票 千里冰封 2007-11-30 09:25  
帮你投了
re: 帮自己的另一个Blog拉拉票 oracle 2007-11-30 09:00  
去啦
re: 帮自己的另一个Blog拉拉票 Edward's 2007-11-29 15:19  
现在200多票了,应该很多来自blogjava吧
re: 帮自己的另一个Blog拉拉票 超越巅峰 2007-11-29 08:53  
@欢乐的猪
谢谢,大家的支持
re: 帮自己的另一个Blog拉拉票 欢乐的猪 2007-11-28 23:50  
给你投了一票!

什么时候dudu也在Blogjava上搞搞活动
re: 我的另一个Blog地址 Thomas 2007-11-05 12:42  
很棒,拜读了!
re: SWF一个简单工作流引擎[未登录] 超越巅峰 2007-10-10 08:53  
@老五
开源,目前正在申请开源项目
re: SWF一个简单工作流引擎 老五 2007-10-09 22:56  
呵呵,楼主打算开源不?
re: SWF一个简单工作流引擎 L 2007-10-09 17:32  
参考了jBPM很多东西吧,那个流程定义文件很眼熟。Spring有一个OSWorkflow也很轻量级。。
re: SWF一个简单工作流引擎 dennis 2007-10-09 13:30  
@交口称赞
我明白,那你说的用户仍然是指开发者,我以为你说的是最终用户——也就是客户。
re: SWF一个简单工作流引擎 交口称赞 2007-10-09 13:10  
@dennis

我是说工作流引擎要做的好必须有一个良好的流程定制界面

不是说你这个要现在就要一个定制界面

定制也并不是完全流程定制

而是二次开发性质的
封装一层
让用户在有限的范围内定制。
re: SWF一个简单工作流引擎 西滨 2007-10-08 18:08  
Spring已经有一个“Spring Web Flow”了哦,楼主的swf可能改一下名比较好。
re: SWF一个简单工作流引擎 dennis 2007-10-08 14:04  
@交口称赞
简单流程也许用户可以直接定制,真正复杂的流程要考虑到正确性、性能、流程的简化以及业务需求等诸多因素,还是需要专业人士来处理。流程定义工具是工作流引擎的重要部分,楼主这个只是个简单的嵌入式引擎,用自定义的XML做流程定义,已然足够。
re: SWF一个简单工作流引擎 交口称赞 2007-10-08 13:34  
我觉得工作流引擎的要成功
必须有一个良好的流程定制界面

最好傻瓜到用户可以去操作
re: SWF一个简单工作流引擎[未登录] 超越巅峰 2007-10-08 11:59  
更多功能开发中,也希望大家能提供一些针对不同数据库的WorkFlowDAO实现和不同的ActionHandler实现,并和大家一起分享成果。
我正在申请开源项目,届时大家一起努力
re: SWF一个简单工作流引擎 dennis 2007-10-08 11:50  
看了文档,似乎只支持并行路由?选择和循环还未考虑?
great work!
re: 懒对象加载模式 千里冰封 2007-09-20 22:41  
这不失为一种好方法:)
re: Spring集成XFire开发WebService 阿蜜果 2007-09-18 08:59  
呵呵,前阵子也写了篇类似的文章,不过还没放上blog。
:)
用spring 的ws啊
re: Spring集成XFire开发WebService sitinspring 2007-09-17 18:29  
代码乱了一些,怎么不试试"插入代码"按钮呢?
re: Spring集成XFire开发WebService 千里冰封 2007-09-17 18:20  
配XML终究不爽,还是EJB3.0里面的元数据注释好一些
re: Orbacus名字服务的使用 ucs_2008 2007-09-14 00:19  
推荐一款功能强大的Corba模拟器UCS...不用不知道,用了才说妙...

Download site:
http://sourceforge.net/projects/ucs

UCS (Ultra Corba Simulator) is one more powerful corba client/servant simulator tool than other similar products(e.g. Telcopro's MtSim, or OpenFusion's Corba Explorer, or eaiBridge's CAST). It doesn't need idl-related helper class or IR service
呵呵, 我有个朋友做技术顾问, Oracle, BEA, IBM 的证书都拿全了, 什么架构师认证啥的. 不同的职业对证书有不同的需要.
蔡超吧
莫非“Chaocai”是“炒菜”两个字的汉语拼音?兄弟姓名很奇特呀。
这是个什么证书呀,不过看起来就是很牛X了啊,恭喜恭喜。
应该是facade模式吧,有些字符出现错误。
共2页: 1 2 下一页 

导航

统计

常用链接

留言簿(2)

随笔分类(35)

随笔档案(40)

文章分类(2)

文章档案(2)

相册

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜