`
erikchang
  • 浏览: 50648 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

Spring2.5之IOC篇

    博客分类:
  • java
阅读更多

Spring2.5开始引入了@Component注解来管理Bean组件,在2.5以前管理Bean都是使用XML配置文件:<Bean name=”xxx” class=””>,这样在一个稍微大一点的系统中就需要配置很多的bean,对程序员来说是一件麻烦事,@Component的出现改变了这一事实,一个注解就可以免去XML配置,如下

@Component
public class User {
	private String userName="erikchang";

	public String toString() {
		return this.userName;
	}
}

 

这样的一个User类就表示他已经成为Spring管理中的一个Bean,写一个Spring的配置文件bean.xml

<?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="spring.ioc" />
	<!-- 配置文件中仅仅这一行,component-scan表示要求Spring扫描base-package指定的路径下所有文件,有@Component注解的将自动加入Spring的Bean管理中 -->
</beans>

 使用这样一个简单的配置文件就可以任意的使用Bean了,写一个测试类,看看是否真的纳入的SpringBean管理:

 

public class TestComponent {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ApplicationContext context = new ClassPathXmlApplicationContext(
				"bean.xml");
		User user = (User) context.getBean("user");
		System.out.println(user.toString());
	}

}

 

运行一下,可以看到确实如此,User类已经成为一个Spring管理中的Bean

使用@Component注解一个Class,不指定Bean名称时Spring会自动生成一个和class同名且首字母小写的bean,如上则生成一个名为userBean,使用ApplicationContext就可以获取一个名为userbean,在使用@Component注解的时候也可以指定Bean名称:

 

@Component(value=”user1”)、@Component(“user1”)

这两种方式都将生成一个名为user1的Bean,这个时候如果context.getBean(“user”)就会出错,因为名为user的bean已经不存在了。
@Component注解是一个通用形式,也可以说一个顶级注解,Spring2.5中引入了多个具体类型的注解,如@Service、@Repository、@Controller,其中@Service用来注解服务层的类,@Repository用来注解持久化层的类,@Controller用来注解控制器类。建议不同用途的class中不要都用@Component来注解,这样会带来一些麻烦。
@Component等注解后的类Spring都会在ApplicationContext中注册相应的Bean,如果在某些时候不希望@Repository注解的class注册成Bean,则可以如下配置:

<context:component-scan base-package="spring.ioc">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
     </context:component-scan>

使用exclude-filter来过滤不需要注册Bean的注解,同时也可以使用use-default-filters="false" 属性来禁止Spring的自动注册Bean,如下:

<context:component-scan base-package="spring.ioc" use-default-filters="false"/>

 

这样的配置所有注解后的class都不会自动在ApplicationContext中注册的。

使用@Component注解会自动注册BeanBean的引用,就是2.5以前XML配置中的

<bean …><property ref=”xxx”></bean>2.5中提供了@Autowired注解,使用这个注解就解决了Bean的相互注入,比如有2个类,分别如下:

User类:
@Component("user1")
public class User {
	private String userName="erikchang";

	public String toString() {
		return this.userName;
	}
}

 

 

Family类:
@Repository
public class Family {
	@Autowired
	private User user;

	public String toString() {
		return "家庭成员:"+user.toString();
	}
}

Family类中将要使用User类,这个时候就需要将User注入Family中,在2.5以前需要使用set注入或者构造子注入结合XML文件配置来完成,2.5中仍然可以使用set注入和构造子注入,同时也可以直接注解实体来完成注入过程,如上类中,直接在User实体添加@Autowired注解就完成了全部注入,当然也可以使用set方法、构造函数,同样使用@Autowired注解对应的set方法、构造函数,注入的效果都是一样。使用@Autowired注解Family类中的User后,在Family类中就可以自由的使用User类了。

--------------今天太忙了,写了这一点,待续..... 

11
1
分享到:
评论
4 楼 黑猪王子 2009-09-21  
有没有直接某个包下所有的类,即使没有注解
3 楼 javabay 2009-05-22  
楼主写得太好了,期待楼主有更多新作问世。
2 楼 erikchang 2009-04-03  
zhuxiaoqiu 写道

楼主写得很清晰易懂,学习中…… 对了,你有doc或者pdf的版本吗?有的话能否传递一份给zhuxiaoqiu2008@live.cn 谢谢!我上IBM developworks时看到好的文章就会用它页面的打印功能打印成pdf文档保存起来。

这几天太忙了,回头整理好了传上来!
1 楼 zhuxiaoqiu 2009-04-01  
楼主写得很清晰易懂,学习中……
对了,你有doc或者pdf的版本吗?有的话能否传递一份给zhuxiaoqiu2008@live.cn
谢谢!我上IBM developworks时看到好的文章就会用它页面的打印功能打印成pdf文档保存起来。

相关推荐

    精通Spring2.5pdf书籍proSpring2.5

    《精通Spring2.5》是一本深度探讨Spring框架的权威指南,主要针对Spring 2.5版本进行深入解析。Spring是Java企业级应用开发中最受欢迎的框架之一,它以其轻量级、模块化的设计,以及对IoC(Inversion of Control,...

    spring 2.5 IOC 自动扫描,自动注入

    而自动扫描和自动注入是Spring 2.5中实现IOC的两个核心特性,极大地简化了配置工作,提高了开发效率。以下是对这两个特性的详细解释: **自动扫描**: 自动扫描是Spring框架的一个强大功能,它允许开发者指定一个或...

    Spring2.5-中文参考手册chm

    Spring2.5版本是该框架的一个重要里程碑,它在2008年发布,带来了许多新特性和改进,提升了开发者在构建应用程序时的灵活性和效率。 **依赖注入(DI)和控制反转(IoC)** Spring的核心特性之一是依赖注入(Dependency...

    Spring2.5-中文参考手册chm.zip

    这个"Spring2.5-中文参考手册chm.zip"文件包含了关于Spring 2.5版本的详细中文指南,对于学习和理解Spring框架具有很高的价值。 Spring框架的核心特性包括依赖注入(Dependency Injection,DI)、面向切面编程...

    Spring2.5 IOC的简单实现

    **Spring 2.5 IOC(控制反转)的简单实现** Spring 框架是 Java 开发中的一个核心组件,尤其在企业级应用中广泛应用。它提供了依赖注入(Dependency Injection,DI),也就是通常所说的控制反转(Inversion of ...

    struts2.1+spring2.5+hibernate3.3整合之第一步(spring2.5+hibernate3.3)

    Spring2.5是全面的企业级应用框架,它不仅包含IoC(Inversion of Control,控制反转)容器,用于管理对象的生命周期和依赖关系,还提供了AOP(Aspect-Oriented Programming,面向切面编程)功能,实现了对横切关注点...

    spring 2.5框架图

    1. **IoC容器**:在Spring 2.5中,Bean工厂是IoC容器的核心,它负责管理对象的生命周期和依赖关系。开发者可以通过XML配置文件或注解来定义Bean及其依赖,实现组件的解耦。Spring 2.5增强了对注解的支持,使得无需...

    spring2.5常用包

    Spring 2.5 是 Spring 框架的一个重要版本,它在之前的版本基础上引入了许多增强功能和改进,为开发者提供了更强大的工具集。这个压缩包包含的“spring常用包”很可能是为了帮助开发者理解并使用 Spring 2.5 的核心...

    spring2.5 api 离线版

    Spring2.5-Reference_zh_CN.chm Spring2.5-中文参考手册.chm spring——AOP,IOC.doc Spring框架快速入门之简介.doc spring配置全书.doc Spring中的IOC与AOP详解.ppt

    spring2.5相关的jar包

    标题中的"spring2.5相关的jar包"指的是Spring框架2.5版本的相关依赖库。在Spring 2.5版本中,引入了一些重要的改进和新特性,对于理解这个版本的jar包内容至关重要。 首先,Spring 2.5引入了对JSR-303(JavaBeans ...

    Spring2.5和Hibernate3集成--学习spring aop ioc

    Spring2.5和Hibernate3集成 采用声明式事务 1.声明式事务的配置 * 配置sessionFactory * 配置事务管理器 * 配置事务的传播特性 * 配置哪些类哪些方法使用事务 2.编写业务逻辑方法 * 继承...

    spring2.5源码编译

    Spring作为Java领域的主流框架之一,其2.5版本是许多开发者学习和研究的基础。本文将详细介绍如何编译Spring 2.5的源码,带你一步步走进Spring的世界。 首先,我们要准备的是一个有效的开发环境。确保你已经安装了...

    Spring2.5-Reference_zh_CN.txt

    在Spring2.5中,IoC容器支持通过XML配置文件或注解的方式定义和管理Bean之间的依赖关系。 #### 三、Bean定义与管理 - **Bean定义**:Spring框架中的Bean是应用程序的基本组成部分,它们通常代表业务实体或服务组件...

    Spring2.5实例

    本实例是针对Spring 2.5与Hibernate集成的实战演示,旨在展示如何利用Spring的依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IoC)容器来管理Bean,并通过Spring的面向切面编程...

    spring2.5中文开发手册

    Spring框架之所以流行,是因为它将复杂的企业级应用开发抽象化,提供了许多便利的基础设施,使得开发者能够专注于业务逻辑的实现,而不是底层的细节。Spring 2.5版本的发布,为开发者带来了更多的新特性,如支持注解...

    cxf+Spring2.5

    【标题】"cxf+Spring2.5" 指的是使用Apache CXF框架与Spring 2.5版本进行集成的示例项目。Apache CXF是一个开源服务框架,它允许开发人员创建和消费Web服务,而Spring框架则是一个广泛使用的Java企业级应用的IOC...

    spring2.5.2开发参考手册pdf,spring2.5.ppt,Spring2.5-中文参考手册.chm

    Spring 2.5版本是一个重要的里程碑,引入了许多新特性和改进,为开发者提供了更强大的功能和更灵活的配置。以下是对这三个文档内容的概览: 1. **Spring 2.5.2 开发参考手册PDF**: 这份手册详细介绍了Spring ...

    spring2.5 中文参考手册

    1. **IoC(Inversion of Control,控制反转)与DI(Dependency Injection,依赖注入)**:Spring的核心理念是通过容器管理对象及其依赖关系,而非让对象自行创建或查找依赖。DI允许开发者声明对象的依赖,由Spring...

    spring2.5教程(传智)

    【Spring 2.5 教程(传智)】是一个针对初学者的全面Spring框架教程,旨在帮助开发者理解和掌握Spring的核心特性和使用方法。以下是该教程涵盖的主要知识点: 1. **Spring 概述**:Spring是一个开源的Java平台,它...

Global site tag (gtag.js) - Google Analytics