- 浏览: 77009 次
- 性别:
- 来自: 北京
最新评论
-
wteqiao:
[color=orange][/color]
annotation(@Retention) -
hanwesley:
谢谢,我在你的基础之上学习的。感觉还不错。
我理解的lucene原理(初级) -
DepthJava:
一直没找到,能完全解析EMial的方法。包括MIME解析
乱 ...
MIME协议分析(转) -
hardPass:
能看看你的mvc-config.xml 啊?
自制MVC框架:TonyMVC -
geek87:
非常好的资料..支持一下
spring2.5 注解技术
是否有了这些 IOC 注释,我们就可以完全摒除原来 XML 配置的方式呢?答案是否定的。有以下几点原因:
- 注 释配置不一定在先天上优于 XML 配置。如果 Bean 的依赖关系是固定的,(如 Service 使用了哪几个 DAO 类),这种配置信息不会在部署时发生调整,那么注释配置优于 XML 配置;反之如果这种依赖关系会在部署时发生调整,XML 配置显然又优于注释配置,因为注释是对 Java 源代码的调整,您需要重新改写源代码并重新编译才可以实施调整。
- 如果 Bean 不是自己编写的类(如
JdbcTemplate
、SessionFactoryBean
等),注释配置将无法实施,此时 XML 配置是唯一可用的方式。 - 注释配置往往是类级别的,而 XML 配置则可以表现得更加灵活。比如相比于
@Transaction
事务注释,使用 aop/tx 命名空间的事务配置更加灵活和简单。
所 以在实现应用中,我们往往需要同时使用注释配置和 XML 配置,对于类级别且不会发生变动的配置可以优先考虑注释配置;而对于那些第三方类以及容易发生调整的配置则应优先考虑使用 XML 配置。Spring 会在具体实施 Bean 创建和 Bean 注入之前将这两种配置方式的元信息融合在一起。
第一步:对spirng的配置文件进行调节:
对注释文件进行自动读取和加载
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="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="com.babasport"/> <context:property-placeholder location="classpath:jdbc.properties"/> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${driverClassName}"> </property> <property name="url" value="${url}"></property> <property name="username" value="${username}"></property> <property name="password" value="${password}"></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">create</prop> </props> </property> <property name="mappingResources"> <list> <value>com/babasport/VO/project/ProjectType.hbm.xml</value> </list> </property> </bean></beans>
注意分析:
1
<context:property-placeholder location="classpath:jdbc.properties"/>
properties文件所在地。有了段代码以后,你的dataSource信息就可以存储在这个properties文件里面了。在spring中调用这些信息时使用${}方式。
2
<context:component-scan base-package="com.baobaotao"/>
后面的目录为要自动读取注释文件的目录范围(spring2.5 开始拥有的功能);这个里面包含了<context:annotation-config/>的信息。
3
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="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的支持
4
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
这里的class值也进行了修改
第二步: 在相应文件中加入注释
1 注入相关注释 (要支持<context:annotation-config/>)
@autowired和@Resouce
@Resouce先按name属性查找,如果找不到才用类型查找。即@Resouce要比@autowired好一些
@Resouce由J2EE提供,@Autowired由spring提供。所以这里还是提倡使用@Resouce
public class ProjectService implements IProjectService { @Resource private ProjectTypeDAO projectTypeDAO; public void save(ProjectType projectType){ this.projectTypeDAO.save(); } }
例子中的projectTypeDAO就进行了注入,在配置文件中只需要写DAO,就可以不用写Service了
2 spring查询管理的相关注释(推荐) (要支持<context:component-scan base-package=".."/>,由了这个就默认上面也包含了,不用在写上面的那个支持了)
@Service 标注业务层对象的组件
@Controller 标注控制层对象的组件
@Repository 标注数据库访问层,即DAO层
@Component 标注“泛指"组件
把整个项目改造成注解方式的
第一步: 编写spring配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="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="com.babasport"/> <context:property-placeholder location="classpath:jdbc.properties"/> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${driverClassName}"> </property> <property name="url" value="${url}"></property> <property name="username" value="${username}"></property> <property name="password" value="${password}"></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">create</prop> </props> </property> <property name="mappingResources"> <list> <value>com/babasport/VO/project/ProjectType.hbm.xml</value> </list> </property> </bean> </beans>
第二步:编写DAO文件,
BaseDAO文件继承hibernateDAOSupport。
由于SessionFacory是在hibernateDAOSupport里面的。不能进行更改,所以更set。。的名字。然后由类型匹配来进行更改
package com.babasport.DAO.hibernate; import javax.annotation.Resource; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.springframework.stereotype.Repository; @Repository public class BaseDAO extends HibernateDaoSupport { @Autowired public void setSessionFactory0(SessionFactory sessionFactory){ super.setSessionFactory(sessionFactory); } }
普遍的DAO文件来继承这个BaseDAO文件:
package com.babasport.Service.project; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.babasport.DAO.IProjectTypeDAO; import com.babasport.DAO.hibernate.ProjectTypeDAO; import com.babasport.VO.project.ProjectType; @Service public class ProjectService implements IProjectService { @Resource(name="projectTypeDAO") private IProjectTypeDAO projectTypeDAO; public void save(ProjectType projectType){ this.projectTypeDAO.save(projectType); } }
第三步: 编写Service文件
package com.babasport.Service.project; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.babasport.DAO.IProjectTypeDAO; import com.babasport.DAO.hibernate.ProjectTypeDAO; import com.babasport.VO.project.ProjectType; @Service public class ProjectService implements IProjectService { @Resource(name="projectTypeDAO") private IProjectTypeDAO projectTypeDAO; public void save(ProjectType projectType){ this.projectTypeDAO.save(projectType); } }
分析:
@Service和@Response为自动往配置文件中加入bean
@Resouce和@Autowried为把ref信息导入
发表评论
-
自制MVC框架:TonyMVC
2009-08-19 11:39 1682MVC框架已经使用的非常广泛了,现在我也自制一个MVC框架来加 ... -
spring MVC
2009-08-14 20:15 1157第一步:在web.xml文件中加入<listener&g ... -
hibernate中hbm详解
2009-03-31 17:32 12281. 主键( id ) Hibernate的 ... -
jpa的了解
2009-03-29 19:44 11481 jpa对hibernate编程所需要引入的包: h ... -
hbm2dll的使用
2009-03-29 13:04 1278在开发过程中,我们可以先设计数据库,然后由MyEclipse自 ... -
spirng aop(非注释方式)
2009-03-04 18:40 954在某些时候,我们工程中使用的JDK 不一定就是1.5 以 ... -
dao时测试getHiberanteTemple()为null
2009-02-14 18:56 749在对写的一个DAO进行junit测试时,发现getHibera ... -
spring中读取applicationgContext.xml
2009-02-14 18:35 1046当我把spring的配置文件转移到WEB-INF目录下以后,再 ... -
struts1异常的处理分析
2009-02-13 16:40 21981 异常链 当不需要用户来处理和关心原始的异常时,常见的做 ... -
Xdoclet 介绍
2009-02-11 16:25 1483Xdoclet 基本概念 我们可以在 java 代码中使用类 ... -
org.apache.commons.dbcp.BasicDataSource找不到?
2009-02-10 16:04 3157在spring的配置文件中org.apache.commons ... -
ssh整合开发
2009-02-06 11:05 13061 加入j2ee的jar包。放入lib中来 (注意,最好把ja ... -
createProxy(AbstractEntityTuplizer.java:372)异常的解决方
2009-02-06 11:00 758http://hi.baidu.com/ligong_haer ... -
Spring控制的Hibernate中代理异常
2008-12-27 19:06 863阅读全文 类别:默认分类?查看评论 -
Struts2.0学习笔记
2009-01-19 14:48 678阅读全文 类别:默认分类?查看评论 -
struts2.0学习笔记2
2009-01-20 16:36 647阅读全文 类别:默认分类?查看评论
相关推荐
Spring MVC、iBatis 和 Spring 2.5 注解是构建高效、可扩展的企业级 Java 应用程序的常用技术组合。这篇详细的文章将深入探讨这三个组件的核心概念、它们如何协同工作以及如何在实际项目中应用。 首先,Spring MVC ...
让我们深入探讨一下Spring 2.5中的注解驱动技术。 首先,依赖注入是Spring的核心特性,它允许开发者通过接口定义组件间的依赖关系,而不需要在代码中硬编码具体的实现类。在Spring 2.5之前,我们通常通过XML配置...
Spring 2.5引入了一种基于注解的新方式来驱动Spring MVC框架,使得开发者能够更加简洁、直观地配置和管理控制器。这一变化显著提升了开发效率,减少了XML配置文件的复杂性,同时也使得代码更加模块化。 ### 1. 基于...
### Spring2.5注解(标注)学习笔记 在探讨Spring2.5中常见的四个注解之前,我们先简要回顾一下Spring框架的基本概念。Spring框架是一个轻量级的Java应用开发框架,它通过依赖注入(DI)和面向切面编程(AOP)等...
在本文中,我们将探讨如何将Direct Web Remoting (DWR) 3.0与Spring 2.5框架整合,并利用注解(Annotation)进行配置。DWR是一个允许JavaScript与Java服务器端进行交互的库,而Spring 2.5引入了对注解的强大支持,...
《精通Spring2.5》是一本深度探讨Spring框架的权威指南,主要针对Spring 2.5版本进行深入解析。Spring是Java企业级应用开发中最受欢迎的框架之一,它以其轻量级、模块化的设计,以及对IoC(Inversion of Control,...
Spring2.5版本是该框架的一个重要里程碑,它在2008年发布,带来了许多新特性和改进,提升了开发者在构建应用程序时的灵活性和效率。 **依赖注入(DI)和控制反转(IoC)** Spring的核心特性之一是依赖注入(Dependency...
在Spring2.5中,注解如`@Autowired`、`@Service`、`@Repository`和`@Controller`引入了无XML配置的可能性。`@Autowired`自动装配依赖,`@Service`、`@Repository`和`@Controller`分别用于标记业务、数据访问和控制层...
使用Spring2.5的Autowired实现注释型的IOC , 使用Spring2.5的新特性——Autowired可以实现快速的自动注入,而无需在xml文档里面添加bean的声明,大大减少了xml文档的维护
2. **注解驱动的开发**:Spring 2.5引入了大量的注解,如`@Controller`、`@Service`、`@Repository`和`@Component`,这些注解用于标记不同层的类,使代码更简洁,提高了可读性。 3. **AOP增强**:Spring的面向切面...
4. **注解驱动开发**:Spring 2.5大大增强了对Java注解的支持,如`@Service`、`@Repository`和`@Controller`,这些注解可以替代XML中的bean定义,简化配置。 5. **JSR-303数据校验**:Spring 2.5集成了JSR-303...
使用 Spring 2.5 基于注解驱动的 Spring MVC 详解 本文将介绍 Spring 2.5 新增的 Spring MVC 注解功能,讲述如何使用注解配置替换传统的基于 XML 的 Spring MVC 配置。 Spring MVC 注解驱动 在 Spring 2.5 中,...
Spring 2.5大幅扩展了对Java注解的支持,包括`@Autowired`、`@Qualifier`、`@Required`等,这些注解使得开发者可以直接在类和方法上声明依赖,而无需XML配置。这极大地减少了配置文件的复杂性。 3. **AOP(面向切...
"CRM完整版 spring2.5注解+hibernate3.0"是一个专为中级程序员设计的项目,旨在帮助他们深入理解和应用Spring 2.5版本的注解以及Hibernate 3.0 ORM框架。 Spring 2.5是Spring框架的一个里程碑版本,它引入了大量的...
Spring 2.5引入了对注解的强大支持,这些注解在Spring 3.0之后仍然通用,极大地简化了配置并增强了代码的可读性。本文将详细介绍Spring中的一些核心注解及其用法。 首先,要使注解生效,我们需要在Spring配置中注册...
这个"Spring2.5-中文参考手册chm.zip"文件包含了关于Spring 2.5版本的详细中文指南,对于学习和理解Spring框架具有很高的价值。 Spring框架的核心特性包括依赖注入(Dependency Injection,DI)、面向切面编程...
通过阅读《Spring2.5-中文参考手册.chm》这份文档,开发者可以深入了解Spring 2.5的各种特性和用法,解决实际开发中遇到的问题,提升开发效率。文档不仅包含详细的API参考,还包含丰富的示例和最佳实践指导,是学习...
Spring2.5在这方面进行了优化,增强了对JSR-330标准的支持,如`@Inject`注解,使得依赖注入更加简单和标准化。 其次,Spring2.5在AOP(面向切面编程)方面也有所加强。AOP是Spring用于实现横切关注点,如日志、事务...
Spring 2.5增强了对注解的支持,使得无需XML配置也能实现Bean的声明和注入。 2. **AOP**:Spring的AOP模块提供了一种在不修改代码的情况下,实现横切关注点(如日志、事务管理)的方式。在Spring 2.5中,AOP支持更...