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>
分享到:
相关推荐
本教程将深入探讨`@Resource`和`@Component`这两个核心注解的用法,以及它们在Spring MVC中的应用。 ### 1. `@Component`注解 `@Component`是Spring框架的核心注解,用于标记一个Java类为Spring管理的bean。当...
当使用@Resource或@Autowired注解注入Spring管理的Bean时,需要注意注入变量的类型必须与要注入的Bean类型或其父类类型匹配。否则,Spring将无法完成注入过程,因为类型不一致会导致注入失败。 总结来说,Spring...
4. **使用其他注解**:除了 `@Controller`,Spring 还提供了 `@Component`(基础注解)、`@Service`、`@Repository` 以及注入 bean 的注解,如 `@Autowired`、`@Qualifier`、`@Resource` 等。 5. **配置 Spring**:...
在Spring中,注解是实现依赖注入的主要方式,如`@Autowired`、`@Qualifier`、`@Resource`等。 1. `@Autowired`注解:这是Spring中最常用的注解,用于自动装配依赖。当我们在类的字段或方法上使用这个注解时,Spring...
- 控制反转是Spring框架的核心,它通过描述(如XML配置或注解)由第三方(Spring容器)生成或获取被依赖的实例,从而实现对象之间的解耦,减少程序间依赖,提升模块化程度。 - 依赖注入是IoC的一种表现形式,它从...
要启用 Spring MVC 的注解功能,需要在 Spring 配置文件中添加以下配置: ```xml <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> ``` 这将启动 Spring MVC 的注解...
6. **@Resource/@Autowired**:分别用于J2EE和Spring框架中依赖注入。 7. **@Transactional**:用于事务管理。 8. **@ResponseBody**:用于将返回对象转化为JSON字符串,并写入HTTP响应体。 9. **@Scope**:用于指定...
- **通用组件**:`@Component`,用于标注通用组件,它是Spring中最基本的组件注解,可以用于任何层次的组件。 - **示例**: ```java @Controller public class MyController { // 控制器代码 } @Service ...
Spring框架充分利用了这一特性,通过注解简化了配置工作,例如`@Component`、`@Service`、`@Repository`和`@Controller`用于标记bean,`@Autowired`用于自动装配依赖,`@RequestMapping`处理HTTP请求等。 1. **...
Spring MVC的基本配置 静态资源映射 拦截器配置 @ControllerAdivce @ExceptionHandler @InitBinder @ModelAttribute 其他配置 ViewController 路径匹配参数配置 ...
在Java Spring框架中,注解(Annotation)是配置的核心元素之一,它们极大地简化了XML配置,使得代码更加简洁,更具可读性。本篇将详细解析Spring中的主要注解及其用法。 一、注解说明 1. 使用简化配置:Spring...
Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建MVC(Model-View-Controller)模式的Web应用程序提供了强大的支持。在本项目中,我们将探讨如何使用Spring MVC、MyBatis和MySQL来搭建一个简单的用户查询...
3. **Spring MVC注解** - `@Controller`:标记在类上表示该类是一个Spring MVC控制器,用于处理HTTP请求。 - `@RequestMapping`:用于映射HTTP请求到处理方法,可以放在类级别或方法级别,实现URL到方法的映射。 ...
Spring3 是一个强大的Java应用程序框架,它引入了注解来简化配置,提高代码的可读性和可维护性。本文将详细介绍Spring3中的主要注解及其用法。 首先,要让Spring容器识别并处理注解,我们需要注册注解处理器。有三...
启用Spring MVC的注解功能,需要配置`<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">`,这使得Spring MVC能够处理注解方法,将HTTP请求映射到注解的控制器类上。...
在Spring框架2.5版本中,引入了大量注解,极大地简化了配置和依赖注入的过程,使得Java代码更加简洁且易于维护。以下是主要的注解及其用途: 1. **@Controller**:用于标记在Spring MVC中的控制器类,这些类通常...
Spring 框架提供了许多注解,用于简化配置和编程。这些注解可以分为多个类别,包括组件扫描、依赖注入、切面编程、事务管理、缓存、异步任务和计划任务等。 一、组件扫描 * @Controller:应用在 MVC 层(控制层)...
- XML配置:可以统一管理所有配置,适合做应用的基本配置,如数据源、资源文件等。 - 注解配置:适合业务开发,如Service层注入bean等。推荐在Set方法或属性上声明注解,代码更为简洁。 3. Spring注解说明 - @...