`
xusaomaiss
  • 浏览: 615536 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Spring2.5注释驱动与基于注释的MVC

    博客分类:
  • java
阅读更多

转摘自:http://tonyaction.blog.51cto.com/227462/83874

写在前面:
好长时间没有写博客了,主要是最近一直忙于工作上面的事情没有研究什么新的东西,也没有什么写的,最近应一个朋友的邀请一起开发一套教材,我才有开始对Spring研究起来,今天把写的其中一部分贴出来与大家共享.如有不足之处请多多指教.
Spring2.5 注释驱动
       8.4.1 Spring2.5 注释驱动
       注释语法越来越多的被业界所使用 , 并且注释配置相对于 XML 配置具有很多的优势:它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。注释和 Java 代码位于一个文件中,而 XML 配置采用独立的配置文件,大多数配置信息在程序开发完成后都不会调整,如果配置信息和 Java 代码放在一起,有助于增强程序的内聚性。而采用独立的 XML 配置文件,程序员在编写一个功能时,往往需要在程序文件和配置文件中不停切换,这种思维上的不连贯会降低开发效率。因此在很多情况下,注释配置比 XML 配置更受欢迎,注释配置有进一步流行的趋势。 Spring 2.5 的一大增强就是引入了很多注释类,现在您已经可以使用注释配置完成大部分 XML 配置的功能。
       在使用注释配置之前,先来回顾一下传统上是如何配置 Bean 并完成 Bean 之间依赖关系的建立。
代码清单 1  Foo.java Foo 对象有一个 String 类型的 name 属性 .
              package com.tony.test;
public class Foo {
        private String name ;
            public String toStirng(){
               return "Foo Name is :" + this . name ;
            }
Set get 方法
}
代码清单 2  Bar.java Bar 对象有一个 String 类型的 add 属性 .
package com.tony.test;
public class Bar {
        private String add ;
            public String toStirng(){
               return "Bar Add is :" + this . add ;
            }
Set get 方法
}
代码清单 3 Main.java Main 对象有两个属性分别是 Foo Bar
package com.tony.test;
public class Main {
        private Foo foo ;
        private Bar bar ;
            public String toString (){
return "Main : [" + this . foo .toStirng() + " " + this . bar .toStirng() + "]" ;
            }
Set get 方法
}
代码清单 4 配置文件 spring-config-beans.xml
        < bean id = "main" class = "com.tony.test.Main" >
           < property name = "foo" ref = "foo" ></ property >
           < property name = "bar" ref = "bar" ></ property >
        </ bean >
   
        < bean id = "foo" class = "com.tony.test.Foo" >
           < property name = "name" value = "Foo" ></ property >
        </ bean >
        < bean id = "bar" class = "com.tony.test.Bar" >
           < property name = "add" value = "Bar" ></ property >
</ bean >
代码清单 5 Test.java Test 类用于初始化 Spring 容器并获得 main 对象
package com.tony.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.
ClassPathXmlApplicationContext ;
public class Test {
            public static void main(String[] args) {   
                 String[] locations = { "spring-config-beans.xml" };   
ApplicationContext ctx = new ClassPathXmlApplicationContext (locations);   
                 Main main = (Main) ctx.getBean( "main" );   
                 System. out .println(main);   
            }  
}
运行 Test 类控制台输出以下信息:
Main : [Foo Name is :Foo Bar Add is :Bar]
这说明 Spring 已经完成了 Bean 的创建和装配工作。
1) 使用 @Autowired 注释
Spring 2.5 引入了 @Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。下面我们来看一下使用 @Autowired 进行成员变量自动注入的代码:
代码清单 6 使用 @Autowired 注释的 Main.java, 此时可以将 Main.java 类中的 set get 方法删除
package com.tony.test;
 
import org.springframework.beans.factory.annotation.Autowired ;
 
public class Main {
           @Autowired
           private Foo foo ;
           @Autowired
           private Bar bar ;
   
           public String toString(){
return "Main : [" + this . foo .toStirng() + " " + this . bar .toStirng() + "]" ;
           }
}
Spring 通过一个 BeanPostProcessor @Autowired 进行解析,所以要让 @Autowired 起作用必须事先在 Spring 容器中声明 AutowiredAnnotationBeanPostProcessor Bean
代码清单 7 修改配置文件
<!--   BeanPostProcessor  将自动对标注  @Autowired   Bean  进行注入  -->    
< bean class = "org.springframework.beans.factory.annotation.
AutowiredAnnotationBeanPostProcessor" />
        <!— 此时移除  main Bean  的属性注入信息  -->   
        < bean id = "main" class = "com.tony.test.Main" ></ bean >
   
        < bean id = "foo" class = "com.tony.test.Foo" >
           < property name = "name" value = "Foo" ></ property >
        </ bean >
        < bean id = "bar" class = "com.tony.test.Bar" >
           < property name = "add" value = "Bar" ></ property >
</ bean >
Spring 容器启动时, AutowiredAnnotationBeanPostProcessor 将扫描 Spring 容器中所有 Bean ,当发现 Bean 中拥有 @Autowired 注释时就找到和其匹配(默认按类型匹配)的 Bean ,并将其注入。
2) 使用 @Qualifier 注释
Spring 允许我们通过 @Qualifier 注释指定注入 Bean 的名称,这样就不会产生注入错误了,请看下面代码清单:
       代码清单 8 修改 Main.java 类中的 foo 属性注释增加注释 @Qualifier ( "foo1" )
public class Main {
           @Autowired
           @Qualifier ( "foo1" )
           private Foo foo ;
   
           @Autowired
           private Bar bar ;
   
           public String toString(){
return "Main : [" + this . foo .toStirng() + " " + this . bar .toStirng() + "]" ;
           }
}
代码清单 9 在配置文件中增加 id foo2 Bean 定义
< bean class = "org.springframework.beans.factory.annotation.
AutowiredAnnotationBeanPostProcessor" />
   
        < bean id = "main" class = "com.tony.test.Main" ></ bean >
   
        < bean id = "foo1" class = "com.tony.test.Foo" >
           < property name = "name" value = "Foo1" ></ property >
        </ bean >
        < bean id = "foo2" class = "com.tony.test.Foo" >
           < property name = "name" value = "Foo2" ></ property >
        </ bean >
        < bean id = "bar" class = "com.tony.test.Bar" >
           < property name = "add" value = "Bar" ></ property >
</ bean >
运行 Test.java 控制台输出如下信息 :
Main : [Foo Name is :Foo1 Bar Add is :Bar]
证明 Spring 容器成功将 foo1 <s
分享到:
评论

相关推荐

    struts2+spring2.5+jpa(基于注释)

    总的来说,"SSJ使用注释版"项目展示了如何利用Struts2、Spring2.5和JPA这三大框架,结合注解方式,构建一个现代Java Web应用。通过深入理解这些技术和注解的用法,开发者可以更高效地开发和维护复杂的业务系统。

    Java代码生成工具 绿色版_生成Struts2.1.8,Spring2.5,Hibernate3代码

    Java代码生成工具是一种高效开发辅助软件,主要用于自动化生成基于Java技术栈的Web应用程序代码,尤其针对Struts2.1.8、Spring2.5和Hibernate3这三个经典框架的集成应用。这样的工具能够显著提高开发效率,减少手动...

    spring源码注释中文

    Spring 源码注释中文版的提供,使得开发者能够更加深入地理解 Spring 的工作原理,无需经过复杂的编译过程,可以直接阅读源码注释来学习。 Spring 框架主要由以下几个关键模块组成: 1. **Core Container(核心...

    struts2+spring2.5+hibernate3.2 + freemarker 全新功能实现的增删改查+freemarker 摸版

    struts2+spring2.5+hibernate3.2 + ...spring2.5 是用注释来注入 hibernate3.2 是用ejb3注解映射关系 hibernate3 +个属性可以自动生成表结构 freemarker 用摸版来表现视图,这个例子就是简单的用法没进行进一不的架设

    spring mvc注释文档

    ### Spring MVC注释文档知识点详解 #### 概述 随着技术的发展与演进,软件开发领域不断出现新的设计理念和技术框架。Spring MVC作为Spring框架的重要组成部分之一,在Spring 2.5版本中引入了基于注解的配置方式,...

    Struts2+Spring2.5+Ibatis2.3架构

    总的来说,Struts2+Spring2.5+Ibatis2.3架构是一个成熟且广泛应用的Java Web开发组合,它将MVC设计模式、依赖注入和数据库操作有效地融合在一起,为开发者提供了强大的工具集,便于构建复杂的企业级应用。...

    spring2.5+Hibernian3.2+struts2.6

    在本文档中,我们将详细探讨如何构建一个基于注释配置的SSH2应用,避免传统的XML配置,提升开发效率。 首先,我们来了解SSH2框架的核心组成部分: 1. **Struts2**:作为MVC(模型-视图-控制器)框架,负责处理HTTP...

    spring源码(注释+测试版)

    3. **spring-jms**:此模块为Java消息服务(JMS)提供支持,包括生产者、消费者以及与消息驱动bean的集成。如果你的项目中需要使用消息队列来解耦系统组件或实现异步处理,这个模块将大有裨益。 4. **spring-...

    dwr2+struts2+spring2.5+hibernate3登陆网站

    Struts2 是一个基于MVC(模型-视图-控制器)设计模式的Java Web框架,用于构建结构清晰且易于维护的Web应用程序。在登录系统中,Struts2可以处理HTTP请求,管理视图展示,以及协调模型和控制器的交互。登录表单通常...

    spring mvc mybatis 整合源码,带数据库脚本,带详细注释

    - Spring MVC是基于Model-View-Controller(MVC)设计模式的Web应用框架,提供了一种组织和处理请求的机制。 - 它的核心组件包括DispatcherServlet、HandlerMapping、HandlerAdapter、ModelAndView和ViewResolver...

    spring 源码中文注释

    此外,Spring框架也引入了JSR-330定义的依赖注入注解,如`@Inject`,并与JSR-250的注解(如`@PostConstruct`、`@PreDestroy`)进行集成,使代码更加简洁。同时,Spring的`@Component`、`@Service`、`@Repository`和`...

    spring源码中英文注释

    5. **Spring MVC**:Spring的Web MVC模块用于构建Web应用程序。`DispatcherServlet`是入口点,它负责请求分发。`HandlerMapping`和`HandlerAdapter`分别负责映射请求到处理器和适配处理器执行。`ModelAndView`则用于...

    spring 编译后源码(有注释)

    在"spring 编译后源码(有注释)"这个压缩包中,你将获得 Spring 框架 5.0.2.RELEASE 版本的源代码,这些源码已经包含了中文注释,对于学习和理解 Spring 框架的工作原理极其有价值。 1. **IoC(Inversion of ...

    Spring MVC入门 XML版本+注释版本

    Spring MVC是Spring框架的一部分,主要用于构建Web应用程序的模型-视图-控制器(MVC)架构。这个入门教程将涵盖XML配置和注解配置两种方式,帮助初学者理解如何在Spring MVC中搭建基本的"Hello, World!"应用。 首先...

    使用 Spring 2_5 注释驱动的 IoC 功能.mht

    **Spring 2.5 注释驱动的 IoC 功能详解** Spring 框架自 2.5 版本开始引入了对注解的强大支持,极大地简化了依赖注入(Dependency Injection,简称 DI)的配置过程。注解驱动的 IoC(Inverse of Control,控制反转...

    sturts2+spring2.5+hibernate3.5+c3p0+log4j整合示例项目

    本项目是一个基于Struts2、Spring2.5、Hibernate3.5的整合示例,其中还引入了c3p0作为数据库连接池,并使用了日志工具Log4j。这个项目的目的是帮助开发者理解如何在实际开发中快速、有效地整合这四个关键组件,从而...

    Spring MVC 入门实例

    在 Spring MVC 中, jsp 文件中尽量不要有 Java 代码, 只有 HTML 代码和"迭代(forEach)"与"判断(if)"两个jstl标签. jsp 文件只作为渲染(或称为视图 View)模板使用. 好了, 我们开始吧. 首先我们需要一个放在 WEB-INF...

    spring、 spring mvc、 mybatis 开发的java客户关系管理系统,前端采用easyui编写.zip

    《基于Spring、Spring MVC、MyBatis的Java客户关系管理系统详解》 在现代企业运营中,客户关系管理(CRM)系统扮演着至关重要的角色,它帮助企业有效地管理与客户的交互,提高销售效率,优化客户服务,从而增强企业...

    站静态化,网上内容采集功能超强的CMS(1) 注释语法.chm(1) struts2+hibernate3.2+spring2.5(1) Red+Hat+Enterprise(1) 软件(1) struts分页组件(1) Hibernate(1)

    Spring2.5版本引入了对Java Persistence API(JPA)的支持,增强了与Hibernate等ORM工具的集成,使得开发更加灵活。 6. **Red Hat Enterprise Linux**:Red Hat Enterprise Linux是一款广泛使用的商业Linux发行版,...

Global site tag (gtag.js) - Google Analytics