`
snoopy7713
  • 浏览: 1152856 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

Spring2.5中使用注解装配属性and组件自动扫描

阅读更多

Spring2.5中使用注解装配属性
可在Java代码中使用@Resource 或者@Autowired 注解进行装配,但需在XML中配置以下信息
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd"

然后显式的配置<context:annotation-config/>
该配置隐式注册了多个对注解进行解析的处理器,如下列举
AutowiredAnnotationBeanPostProcessor      CommonAnnotationBeanPostProcessor
PersistenceAnnotationBeanPostProcessor    RequiredAnnotationBeanPostProcessor

其实,注解本身做不了任何事情,和XML一样,只起到配置的作用,主要在于背后强大的处理器

另外,比较建议使用@Resource注解 而不要使用@Autowired注解
因为@Autowired注解是Spring提供的,而@Resource注解是J2EE提供的
在JDK6中就已经包含@Resource注解了,所以它没有跟Spring紧密耦合
并且在使用Spring时,若使用了JSR-250 中的注解,如@Resource//@PostConstruct//@PreDestroy
那么还需要Spring安装目录中的SPRING_HOME//lib//j2ee//common-annotations.jar包的支持
这里面的@Resource注解就是在SPRING_HOME//lib//j2ee//common-annotations.jar中的

 

@Resource注解
@Resource注解和@Autowired一样,也可以标注在字段或属性的setter方法上
@Resource默认按名称装配 ,名称可以通过name属性 指定。当找不到与名称匹配的bean时,才会按类型装配
若注解标注在字段上且未指定name属性 ,则默认取字段名作为bean名称寻找依赖对象
若注解标注在setter上且未指定name属性 ,则默认取属性名作为bean名称寻找依赖对象
如果没有指定name属性,并且按照默认的名称仍找不到依赖对象时,它就会按类型匹配
但只要指定了name属性,就只能按名称装配了

 

@Autowired注解
@Autowired默认是按类型装配对象的 ,默认情况下它要求依赖对象必须存在
如果允许null值,可以设置它的required属性为FALSE,如@Autowired(required=false)
若想要按名称装配,可以结合@Qualifier注解一起使用,如@Autowired(required=false)  @Qualifier("personDaoBean")

 


 

Spring2.5的组件自动扫描
在一个稍大的项目中通常会有上百个组件,如果都使用XML的bean 定义来配置组件的话
显然会增加配置文件的体积,查找及维护也不方便
Spring2.5 就为我们引入了组件自动扫描机制
它可以在classpath 下寻找标注了@Service、@Repository、@Controller、@Component注解 的类
并把这些类纳入Spring容器中管理,它的作用和在XML中使用bean节点配置组件是一样的
使用自动扫描机制,则需配置<context:component-scan base-package="com.jadyer"/> 启动自动扫描
其中base-package 指定需要扫描的包,它会扫描指定包中的类和子包里面类
@Service 用于标注业务层组件
@Repository 用于标注数据访问组件,即DAO组件
@Controller 用于标注控制层组件,如Struts中的Action
@Component 泛指组件,当组件不要好归类时,可以使用这个注解进行标注

 

1、 可以使用诸如@Service("personDao") 修改bean名称 ,而它默认的是将首字母小写的类名作为<bean>名称
2、 若要更改<bean>作用域 的话,可以使用@Scope("prototype") 注解来修改<bean>作用域
3、 若想让<bean>实例化之后去执行初始化方法 ,可以使用@PostConstruct 标注在方法上
4、 同样@PreDestroy 注解标注在方法上,可以用来指定<bean>销毁时执行的方法
这里的@PostConstruct是EJB3里面用来初始化bean的注解,它也不是Spring中的注解
并且<context:component-scan base-package=""/>的背后注册了很多用于解析注解的处理器
其中就包括了<context:annotation-config/>配置项里面的注解所使用的处理器
所以配置了<context:component-scan base-package="">之后 便无需再配置<context:annotation-config>

分享到:
评论

相关推荐

    Spring2.5_注解介绍(3.0通用)

    Spring框架在2.5版本引入了对注解的广泛支持,这一特性在后续的3.0版本中得到了进一步增强,并且成为了Spring应用的核心部分。注解的使用极大地简化了Spring配置,提高了代码的可读性和可维护性。下面将详细介绍其中...

    spring2.5的所有jar包

    3. **XML配置增强**:在Spring 2.5中,XML配置文件得到了改进,引入了自动装配(autowiring)和注解支持,使得配置更加简洁。例如,`&lt;context:component-scan&gt;`标签可以扫描指定包下的所有注解组件。 4. **注解驱动...

    spring2.5注解驱动

    使用`@Autowired`注解可以自动装配依赖,Spring会根据类型或名称匹配合适的bean进行注入。 此外,`@Qualifier`注解可以在多个相同类型的bean中指定具体要注入哪个。`@Scope`注解可以定义bean的作用范围,如单例...

    Spring2.5 自动扫描classpath

    标题中的“Spring2.5 自动扫描classpath”指的是Spring框架在2.5版本中引入的一项功能,即自动组件扫描(Auto-Component Scanning)。这项功能允许开发者无需在XML配置文件中显式声明bean,而是通过在类上添加特定...

    spring2.5中文api

    5. **@Component,@Service,@Repository和@Controller注解**:这些注解是Spring 2.5中的组件扫描基础,它们分别用于标记不同类型的bean,简化了组件的注册过程。 6. **增强的AOP支持**:Spring 2.5提供了更多的...

    Spring2.5注解(标注)学习笔记

    ### Spring2.5注解(标注)学习笔记 在探讨Spring2.5中常见的四个注解之前,我们先简要回顾一下Spring框架的基本概念。Spring框架是一个轻量级的Java应用开发框架,它通过依赖注入(DI)和面向切面编程(AOP)等...

    Spring2.5 注解介绍(3.0通用)

    Spring 2.5引入了对注解的强大支持,这些注解在Spring 3.0之后仍然通用,极大地简化了配置并增强了代码的可读性。本文将详细介绍Spring中的一些核心注解及其用法。 首先,要使注解生效,我们需要在Spring配置中注册...

    Spring2.5架构图

    Spring 2.5 引入了大量的注解,如 `@Autowired`、`@Required`、`@Component`、`@Service`、`@Repository` 和 `@Controller` 等,这些注解简化了代码,使得开发者无需编写大量的 XML 配置就能实现组件扫描和自动装配...

    spring2.5.jar

    总结,Spring框架2.5版本是Spring发展历程中的一个重要里程碑,它在依赖注入、注解支持、组件扫描、AOP、JDBC模板、集成性以及Web-MVC等方面都有显著的提升,为Java开发者提供了更强大、更便捷的开发工具。...

    Spring2.5_注解介绍(3.0通用).pdf

    ### Spring2.5与3.0注解详解 在探讨Spring框架中注解的应用之前,我们首先需要理解注解在Java编程语言中的基础概念。注解是Java SE 5引入的一种元数据机制,用于在代码中嵌入元数据,而Spring框架充分利用了这一...

    Spring2.5中文版CHM

    本资源“Spring2.5中文版CHM”提供了关于Spring 2.5的详细中文文档,对于学习和理解该版本的特性及其在中间层数据访问方面的应用非常有帮助。 1. **依赖注入(Dependency Injection, DI)** - Spring 2.5在DI方面...

    spring2.5.jar下载

    此外,还支持了`@Component`、`@Service`、`@Repository`和`@Controller`等Spring特定的组件注解,帮助实现基于注解的组件扫描。 3. **AOP增强**:在Spring 2.5中,面向切面编程(AOP)也得到了加强,允许开发者...

    spring2.5 官方文档

    - `@Controller`、`@Service`、`@Repository`和`@Component`这些注解用于标记不同层的类,简化了组件扫描和类型安全的自动装配。 - `@Transactional`注解支持声明式事务管理,允许开发者在方法级别声明事务边界。 ...

    spring 2.5

    例如,`@Autowired`注解用于自动装配bean,`@Service`、`@Repository`和`@Controller`注解则用于简化组件扫描,使得无需编写XML配置文件也能实现bean的定义。这极大地提高了开发效率,降低了配置复杂度。 此外,...

    spring2.5学习PPT 传智博客

    - 自动扫描和管理Bean,通过@Component、@Service、@Repository和@Controller注解定义Bean。 15-20. **AOP(面向切面编程)** - AOP用于解耦关注点,例如日志、事务管理等。 - JDK动态代理和CGLIB实现AOP代理。 ...

    Spring2.5学习笔记

    轻量级或重量级主要取决于应用中使用了多少服务。如果一个应用使用了Spring的核心服务且没有启用太多额外的服务,可以认为是轻量级;反之,如果启用了大量服务,则被认为是重量级。例如,EJB容器默认为应用提供了...

    SSH三大框架整合 struts2+hibernate+spring (全注解方式进行配置)

    然后,我们可以使用Spring的`@Component`、`@Service`、`@Repository`和`@Controller`注解来标记我们的Bean,Spring会自动扫描并管理这些Bean。在Struts2中,Action类通常被标记为`@Controller`,其方法上可以使用`@...

    基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发 (1)

    标题中的“基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发”指的是使用注解的方式将三个流行的Java企业级框架——Struts2、Hibernate和Spring进行集成开发。这样的集成有助于简化配置,提高代码的可读性...

    Spring Annotation (注解)详解

    在`Boss`类中,我们可以使用`@Autowired`注解在`car`和`office`属性上,Spring容器会自动寻找匹配类型的Bean并注入。如果存在多个候选Bean,可以通过`@Qualifier`注解指定具体哪个Bean应被注入。 4. **注解驱动的...

Global site tag (gtag.js) - Google Analytics