今天看到iBatis3已经支持Annotation了,不禁有点头晕目眩,看来又一次的抉择开始了。Annotions的确带来了便利,看看Spring的配置:
@Controller
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
public class DeptRuleAction extends BaseAction {
@Autowired
private DeptRuleManager manager;
@Autowired
private LoginUserService loginUserSerivce;
@PostConstruct
public void init() {
}
@Transactional
//Action哪里有事务呀,呵呵
}
嗯,的确比XML简单,也容易维护。也许有其他的问题,比如自动装配带来的隐忧,比如静态数据的注入等等。但是瑕不掩瑜,Spring的Annotation是我喜欢的。
再看看Hibernate:
@Entity
@Table(name = "capital_sources")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class CapitalSource extends BaseModel {
private Integer id;
@Id
@GeneratedValue(generator = "hibseq")
@GenericGenerator(name = "hibseq", strategy = "hilo")
@Column(name = "id", unique = true, nullable = false)
public Integer getId() {
return id;
}
}
hibernate的配置也很简单(上面的代码已经算是复杂了),而且遵循COC风格,与Spring配合几乎做到了领配置。这个,我也喜欢。
Struts2的Annotaions就比较夸张了,下面的代码是Annotaion验证:
@Validations(requiredStrings = {
@RequiredStringValidator(fieldName = "model.loginId", message = "登录名是必须的."),
@RequiredStringValidator(fieldName = "model.password", message = "密码是必须的."),
@RequiredStringValidator(fieldName = "model.email", message = "电子邮件是必须的."),
@RequiredStringValidator(fieldName = "model.confirmPwd", message = "请两次输入密码.") }, stringLengthFields = { @StringLengthFieldValidator(fieldName = "password", minLength = "3", maxLength = "32", message = "密码应多于3字符", trim = true) }, emails = { @EmailValidator(fieldName = "model.email", message = "请输入正确的e-Mail.") }, expressions = { @ExpressionValidator(message = "两次输入的密码必须相同.", expression = "model.password==model.confirmPwd") })
public String save() {
}
晕了,这哪里是简化,分明是代码污染!再看看strut2的Action配置:
@Action(value="/different/url",
results={@Result(name="success", type="httpheader", params={"status", "500", "errorMessage", "Internal Error"})}
)
public String execute() {
return SUCCESS;
}
这是struts2文档中的例子,我无语了.....
其实struts2的XML配置Action已经很简单了:
<action name="*/*" class="{1}Action" method="{2}">
<result name="index" type="dispatcher">/pages/vehicles/basic/{1}/index.jsp</result>
<result name="input">/pages/vehicles/basic/{1}/edit.jsp</result>
<result name="success" type="redirect">{1}/index.do</result>
</action>
在实际的项目中,我用这段XML匹配了8个Action,每个Action都有完整的CRUD操作,这,要比Annotation简单多了吧。
BTW:要说MVC框架,我还是更喜欢SpringMVC,用它做过一个小项目,那才叫零配置,那才叫灵活,那才叫零侵入....可惜我们已经上了Struts2的船了。
所以,Annotations就像盐,放少了没有味道,放多了就候儿了。现在,iBatis又为我们带来了新的Annotations,不知道这道菜是咸还是淡。
分享到:
相关推荐
Android Annotations框架是一个强大的工具,它通过使用Java注解(Annotations)来简化Android应用的开发,提高了编码效率。本文将深入探讨Android Annotations的使用方法和优势,帮助开发者更好地理解和运用这一框架...
赠送jar包:annotations-13.0.jar; 赠送原API文档:annotations-13.0-javadoc.jar; 赠送源代码:annotations-13.0-sources.jar; 赠送Maven依赖信息文件:annotations-13.0.pom; 包含翻译后的API文档:...
赠送jar包:swagger-annotations-2.1.2.jar; 赠送原API文档:swagger-annotations-2.1.2-javadoc.jar; 赠送源代码:swagger-annotations-2.1.2-sources.jar; 赠送Maven依赖信息文件:swagger-annotations-2.1.2....
赠送jar包:annotations-23.0.0.jar; 赠送原API文档:annotations-23.0.0-javadoc.jar; 赠送源代码:annotations-23.0.0-sources.jar; 赠送Maven依赖信息文件:annotations-23.0.0.pom; 包含翻译后的API文档:...
赠送jar包:swagger-annotations-1.6.2.jar; 赠送原API文档:swagger-annotations-1.6.2-javadoc.jar; 赠送源代码:swagger-annotations-1.6.2-sources.jar; 赠送Maven依赖信息文件:swagger-annotations-1.6.2....
赠送jar包:audience-annotations-0.5.0.jar; 赠送原API文档:audience-annotations-0.5.0-javadoc.jar; 赠送源代码:audience-annotations-0.5.0-sources.jar; 赠送Maven依赖信息文件:audience-annotations-...
赠送jar包:swagger-annotations-1.5.20.jar; 赠送原API文档:swagger-annotations-1.5.20-javadoc.jar; 赠送源代码:swagger-annotations-1.5.20-sources.jar; 赠送Maven依赖信息文件:swagger-annotations-...
赠送jar包:jackson-annotations-2.13.1.jar; 赠送原API文档:jackson-annotations-2.13.1-javadoc.jar; 赠送源代码:jackson-annotations-2.13.1-sources.jar; 赠送Maven依赖信息文件:jackson-annotations-...
赠送jar包:swagger-annotations-1.5.24.jar; 赠送原API文档:swagger-annotations-1.5.24-javadoc.jar; 赠送源代码:swagger-annotations-1.5.24-sources.jar; 赠送Maven依赖信息文件:swagger-annotations-...
Hibernate是Java领域中广泛应用的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。而Hibernate Annotations是Hibernate框架的一个重要组成部分,它引入了基于注解...
赠送jar包:jackson-annotations-2.11.4.jar; 赠送原API文档:jackson-annotations-2.11.4-javadoc.jar; 赠送源代码:jackson-annotations-2.11.4-sources.jar; 赠送Maven依赖信息文件:jackson-annotations-...
赠送jar包:jackson-annotations-2.9.0.jar; 赠送原API文档:jackson-annotations-2.9.0-javadoc.jar; 赠送源代码:jackson-annotations-2.9.0-sources.jar; 赠送Maven依赖信息文件:jackson-annotations-2.9.0....
赠送jar包:j2objc-annotations-1.3.jar; 赠送原API文档:j2objc-annotations-1.3-javadoc.jar; 赠送源代码:j2objc-annotations-1.3-sources.jar; 赠送Maven依赖信息文件:j2objc-annotations-1.3.pom; 包含...
赠送jar包:error_prone_annotations-2.3.2.jar; 赠送原API文档:error_prone_annotations-2.3.2-javadoc.jar; 赠送源代码:error_prone_annotations-2.3.2-sources.jar; 赠送Maven依赖信息文件:error_prone_...
开发工具 jackson-annotations-2.8.6开发工具 jackson-annotations-2.8.6开发工具 jackson-annotations-2.8.6开发工具 jackson-annotations-2.8.6开发工具 jackson-annotations-2.8.6开发工具 jackson-annotations-...
赠送jar包:jackson-module-jaxb-annotations-2.2.3.jar; 赠送原API文档:jackson-module-jaxb-annotations-2.2.3-javadoc.jar; 赠送源代码:jackson-module-jaxb-annotations-2.2.3-sources.jar; 赠送Maven依赖...
赠送jar包:error_prone_annotations-2.10.0.jar; 赠送原API文档:error_prone_annotations-2.10.0-javadoc.jar; 赠送源代码:error_prone_annotations-2.10.0-sources.jar; 赠送Maven依赖信息文件:error_prone_...
赠送jar包:j2objc-annotations-1.1.jar; 赠送原API文档:j2objc-annotations-1.1-javadoc.jar; 赠送源代码:j2objc-annotations-1.1-sources.jar; 赠送Maven依赖信息文件:j2objc-annotations-1.1.pom; 包含...
它是使用Hibernate进行开发时必不可少的部分,提供了对数据库的基本操作支持,如实体的创建、更新、删除和查询。 接下来,我们重点讨论`hibernate3-annotations.jar`。这是Hibernate3引入注解支持的扩展库,使得...
《Hibernate Annotations 框架详解》 在Java领域,Hibernate是一个广泛应用的对象关系映射(ORM)框架,它极大地简化了数据库操作。而`hibernate-annotations.jar`是Hibernate框架中的一个重要组件,主要负责处理...