`

体验一下Spring2.5 Annotation-based-configration

阅读更多
Spring2.5 Annotation-based-configration大大简化了配置,用一个经典的HelloWorld程序来体验一下:
package edu.jlu.fuliang;

import org.springframework.stereotype.Component;

@Component
public class MessageProvider {
	private String message = "Hello World!";

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}
}

我们只要在bean面前使用@Component注解就可以被Spring的IOC容器管理了.
在看看怎么把MessageProvider注入到MessageRender里面的:
package edu.jlu.fuliang;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class MessageRender {
	private MessageProvider messageProvider;

	@Autowired
	public void setMessageProvider(MessageProvider messageProvider) {
		this.messageProvider = messageProvider;
	}
	
	public void render(){
		System.out.println(messageProvider.getMessage());
	}
}

使用@Autowired注解,Spring就可以把messageProvider注入到MessageRender里面了,
默认是通过byType来自动织入的,可以结合@Autowired 和 @Qualifier 结合使用时,自动注入的策略就从 byType 转变成 byName 了.
然后在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="edu.jlu.fuliang"/>
</beans>

<context:annotationconfig/> 将隐式地向 Spring 容器注册 AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor 以及 equiredAnnotationBeanPostProcessor 这4个 BeanPostProcessor。
<context:component-scan/> 还允许定义过滤器将基包下的某些类纳入或排除
<context:component-scan base-package="com.baobaotao">
    <context:include-filter type="regex" 
        expression="edu\.jlu\.fuliang\.service\..*"/>
    <context:exclude-filter type="aspectj" 
        expression="edu.jlu.fuliang.util..*"/>
</context:component-scan>

下面是一个测试代码:
package edu.jlu.fuliang;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class HelloWorld {
	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"beans.xml"});
		MessageRender render = (MessageRender) context.getBean("messageRender");
		render.render();
	}
}

可惜在如果 Bean 不是自己编写的类(如 JdbcTemplate、SessionFactoryBean 等),注释配置将无法实施.所以还的使用XML,这样将导致XML和Annotation混用,感觉有点
混乱.个人感觉Annotation能够很大程度减少配置的负担,但没有XML灵活,并且修改配置的
时候需要重新编译代码.有时候也不见得比XML简洁,例如使用 @Transactional 事务注释,没有 aop/tx 命名空间的事务配置灵活和简单.
7
3
分享到:
评论
2 楼 sweety 2008-07-03  
引用
很有用的功能
1 楼 fuliang 2008-03-17  
貌似如果使用Annotation-based-configration,不能使用XmlBeanFactory来获得bean,获得的bean都是没有注入依赖的bean,可能它不自动注册AutowiredAnnotationBeanPostProcessor的原因吧.记得XmlBeanFactory不自动注册**BeanPostProcessor的.

相关推荐

    Spring2.5-中文参考手册

    1. **依赖注入**:Spring 2.5提供了更灵活的依赖注入方式,包括通过注解(Annotation-based configuration)来声明依赖关系,使得代码更加简洁,减少了XML配置文件的复杂性。此外,还引入了@Qualifier注解来解决类型...

    spring-framework-2.5开发库

    2. **注解配置 (Annotation-based Configuration)**:Spring 2.5 引入了大量注解,如 `@Autowired`、`@Required` 和 `@Component` 等,使得开发者可以使用注解代替 XML 配置文件,简化了配置过程,提高了开发效率。...

    spring2.5 api

    二、注解配置(Annotation-based Configuration) Spring 2.5 引入了注解配置,允许开发者在类和方法级别使用注解,如 @Component、@Service、@Repository 和 @Controller,这些注解对应了传统的 XML 中的 `&lt;bean&gt;` ...

    spring2.5 官方文档

    Spring 2.5对依赖注入进行了优化,引入了基于注解的配置(Annotation-based configuration),使得开发者可以避免XML配置文件中的大量bean定义。`@Autowired`、`@Required`和`@Qualifier`等注解使得注入更加直观和...

    Spring2.5_学习笔记.doc.zip

    首先,Spring2.5引入了基于注解的配置(Annotation-based Configuration),这极大地简化了XML配置文件的编写,使得应用程序的装配过程更加直观和简洁。开发者可以通过在类或方法上添加如@Service、@Repository、@...

    spring2.5开发参考手册.rar

    2. **注解驱动开发(Annotation-Based Development)**: Spring 2.5引入了大量的新注解,例如`@Component`、`@Service`、`@Repository`和`@Controller`,这些注解帮助开发者定义组件的角色,使代码更具可读性和可...

    spring2.5.jar

    Spring 2.5在依赖注入(DI)方面进行了重大优化,引入了基于注解的依赖注入(Annotation-Based Dependency Injection, ABDI)。这使得开发者无需借助XML配置,就能直接在类的字段或方法上使用注解来声明依赖,如`@...

    spring2.5最新API

    2. **注解配置(Annotation-Based Configuration)** - Spring 2.5引入了全面的注解配置,使得XML配置文件不再是唯一选择。例如,`@Component`、`@Service`、`@Repository`和`@Controller`注解可以标记组件类,配合`@...

    Spring2.5参考手册

    9. **注解配置(Annotation-based Configuration)**:Spring 2.5引入了注解配置,允许开发者使用如@Service、@Repository、@Controller等注解来替代XML配置,使配置更加简洁。 10. **JSR-303验证支持**:Spring ...

    spring2.5的applicationContext配置文件

    2. **依赖注入**:Spring 2.5引入了基于注解的依赖注入(Annotation-Based Dependency Injection, ABDI),使得无需使用XML来声明依赖关系。但同时,XML配置仍然可用。例如,通过`...

    spring-data-jpa-reference1.3.pdf

    - **Annotation-based configuration**: 使用`@EnableJpaRepositories`注解启用JPA Repository支持。 #### 2.2 Query Methods - **查询查找策略**: 可以选择使用方法名推断查询、`@Query`注解定义查询或者使用JPA...

    最新 spring-framework-4.2.5 英文官方文档,包含html、pdf、epub等

    4. **注解驱动开发(Annotation-based Configuration)**:4.2.5版本已经广泛使用注解来简化配置,如@Service、@Repository、@Controller等,这些注解可以替代XML配置,使得代码更加简洁易懂。 5. **MVC框架**:...

    Spring MVC Beginner-s Guide.pdf

    With the power of annotation-based configuration, Spring MVC makes web application development easy for developers. This book is a great companion for beginners who want to learn Spring MVC. With ...

    spring-framework-4.3.6 API

    2. Annotation-based Configuration:除了 XML 配置外,4.3.6 版本更加强调注解驱动的配置,如 @Component、@Service、@Repository、@Controller 等,简化了配置文件。 3. JavaConfig:通过 Java 类配置 Bean,提高...

    Apress.Pro.Spring.2.5.Aug.2008.rar

    在Spring 2.5中,对DI进行了优化,引入了基于注解的配置(Annotation-Based Configuration),使得开发者可以不再依赖XML配置文件,而是在类或方法上直接使用注解来声明依赖关系,这显著提高了开发效率。 Spring...

    Spring-MVC-3.0.rar_Java spring mvc_spring mvc_spring ppt

    1. **Annotation-based Configuration**:引入了注解配置,如@Controller、@RequestMapping等,使得配置更简洁、更直观。 2. **ModelAndView的替代**:可以使用@ModelAttribute注解直接在方法参数中注入模型数据,...

    spring-security-3.0.1

    10. **XML and Annotation Configuration**: 用户可以选择使用XML配置或者注解配置来设置Spring Security,3.0.1版同时支持这两种方式,提供了灵活性。 以上是Spring Security 3.0.1的主要特性和关键知识点。虽然这...

    SPRING-FRAMEWORK-3.0.M2

    其次,Spring 3.0.0.M2引入了基于注解的配置(Annotation-based Configuration),大大简化了XML配置。例如,@Component、@Service、@Repository和@Controller等注解,可以直接在类上标注,表明类的角色,简化了配置...

    Spring_Annotation_IOC代码

    在Spring 2.5版本后,Spring引入了注解来简化配置,这就是所谓的Annotation-based IOC。本文将深入探讨Spring注解驱动的IOC机制。 ### 1. 注解的引入 传统XML配置方式虽然灵活,但随着项目规模的扩大,XML配置文件...

Global site tag (gtag.js) - Google Analytics