spring几个注解配置比较

context:annotation-config

在配置文件中配置:

<context:annotation-config/>

使用这个配置的作用:
开启注解
@Autowired 自动注入
@Resource 自动注入
@PostConstruct bean初始化之前
@PreDestroy bean销毁之后
@PersistenceContext 注入实体管理对象 JPA应用
@Required

基本上都是关于装配的注解。

使用<context:annotation-config/>隐式地向Spring容器注册这4个BeanPostProcessor :
AutowiredAnnotationBeanPostProcessor
RequiredAnnotationBeanPostProcessor
CommonAnnotationBeanPostProcessor
PersistenceAnnotationBeanPostProcessor

上面的注解之所以能够起作用,就是因为这几个BeanPostProcessor:

  • 当 Spring 容器启动时,它们扫描 Spring 容器中所有 Bean,当发现 Bean 中拥有特定的注解时就执行相应的操作
  • 即是用来使上述注解起作用的,也就是说激活已经在applicationContext中注册的bean.

context:component-scan

配置文件中配置:

<context:component-scan base-package="com.sssp">
</context:component-scan>
  • <context:component-scan>做了<context:annotation-config>要做的事情,还额外开@Component,@Repository,@Service,@Controller注解.
  • <context:component-scan>扫描base-package指定的包下面的代码,在applicationcontext中注册扫描到的beans.
  • 即配置这个不仅开启自动装配注解的使用并且开启了注册bean的注解。
    所以配置<context:component-scan>就不需要配置<context:annotation-config/>,比较常用。

关于注册bean的注解:

  • @Component: 基本注解, 标识了一个受 Spring 管理的组件
  • @Respository: 标识持久层(dao层)组件
  • @Service:标识业务层(service层)组件
  • @Controller: 标识表现层(控制器)组件

上面几个注解相当于配置文件中的<bean id="" class=""/>


mvc:annotation-driven

  • 至于该项看前缀就应该知道是springmvc所需要的注解.
    <mvc:annotation-driven/>相当于注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean,虽然springmvc中会自动为我们开启这两个bean,但是如果自定义一些配置就需要添加了,一般不管需不需要都会添加。

配置一些messageconverter,为@Controller注解的使用提供前提条件.
主要是用来向工厂中注册了下面几个Bean实例:
RequestMappingHandlerMapping : 处理@RequestMapping注解
BeanNameUrlHandlerMapping :将controller类的名字映射为请求url.

RequestMappingHandlerAdapter
HttpRequestHandlerAdapter
SimpleControllerHandlerAdapter

ExceptionHandlerExceptionResolver
ResponseStatusExceptionResolver
DefaultHandlerExceptionResolver

前两个是HandlerMapping接口的实现类,用来处理请求映射的.
中间三个是用来处理请求的.具体点说就是确定调用哪个controller的哪个方法来处理当前请求.

第一个处理被@Controller注解的处理器,支持自定义方法参数和返回值.
第二个是处理继承HttpRequestHandler的处理器.
第三个处理继承自Controller接口的处理器.
后面三个是用来处理异常的解析器.

另外还将提供以下支持:
① 支持使用ConversionService实例对表单参数进行类型转换;
② 支持使用@NumberFormatannotation,@DateTimeFormat注解完成数据类型的格式化;
③ 支持使用@Valid注解对Java bean实例进行JSR 303验证;
④ 支持使用@RequestBody和@ResponseBody注解

简而言之就是<mvc:annotation-driven /> 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,
是spring MVC为@Controller分发请求所必须的。
并提供了:数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)。


本系列参考视频教程: http://edu.51cto.com/course/1956.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值