千家信息网

Java Spring的JavaConfig注解是怎样的

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,本篇文章给大家分享的是有关Java Spring的JavaConfig注解是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。序传统s
千家信息网最后更新 2026年11月04日Java Spring的JavaConfig注解是怎样的

本篇文章给大家分享的是有关Java Spring的JavaConfig注解是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

序

传统spring一般都是基于xml配置的,不过后来新增了许多JavaConfig的注解。特别是springboot,基本都是清一色的java config,不了解一下,还真是不适应。这里备注一下。

@RestController

spring4为了更方便的支持restfull应用的开发,新增了RestController的注解,比Controller注解多的功能就是给底下的RequestMapping方法默认都加上ResponseBody注解,省得自己再去每个去添加该注解。

@Configuration

这个标注该类是spring的配置类,本身自带Component注解

@ImportResource

对应的xml

存在的必要性

这个是兼容传统xml配置的,毕竟JavaConfig还不是***的,比如 JavaConfig不能很好地支持aop:advisor和tx:advice , Introduce @EnableAspectJAutoProxy (equivalent to aop:aspectj-autoproxy) , Introduce @Configuration-based equivalent to aop:config XML element

@ComponentScan

对应的xml

该配置自动包含了如下配置的功能:

就是向Spring容器注册AutowiredAnnotationBeanPostProcessor( 使用@Autowired必须注册 )、CommonAnnotationBeanPostProcessor( 使用@Resource 、@PostConstruct、@PreDestroy等必须注册 )、PersistenceAnnotationBeanPostProcessor( 使用@PersistenceContext必须注册 ) 以及RequiredAnnotationBeanPostProcessor( 使用@Required必须注册 )这4个BeanPostProcessor。

值得注意的是 Spring3.1RC2版本 是不允许注解Configuration的类在ComponentScan指定的包范围内的,否则会报错。

@Bean

对应的xml如下:

@EnableWebMvc

对应的xml如下:

该配置自动注册DefaultAnnotationHandlerMapping( 来注册handler method和request的mapping关系 )与AnnotationMethodHandlerAdapter( 在实际调用handler method前对其参数进行处理 )两个bean,以支持@Controller注解的使用。

主要的作用如下:

  • 可配置的ConversionService(方便进行自定义类型转换)

  • 支持用@NumberFormat格式化数字类型字段

  • 支持用@DateTimeFormat格式化Date,Calendar以及Joda Time字段( 如果classpath有Joda Time的话 )

  • 支持@Valid的参数校验( 如果JSR-303相关provider有在classpath的话 )

  • 支持@RequestBody/@ResponseBody注解的XML读写( 如果JAXB在classpath的话 )

  • 支持@RequestBody/@ResponseBody注解的JSON读写( 如果Jackson在classpath的话 )

@ContextConfiguration

主要在junit测试时指定java config

@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({     "classpath*:spring/*.xml",     "classpath:applicationContext.xml",     "classpath:applicationContext-rabbitmq.xml",     "classpath:applicationContext-mail.xml",     "classpath:applicationContext-medis.xml",     "classpath:applicationContext-mybatis.xml"}) @TransactionConfiguration(transactionManager = "mybatisTransactionManager", defaultRollback = false) public class AppBaseTest {    //...... }

@ResponseStatus

主要是rest开发用,注解返回的http返回码,具体值看org.springframework.http.HttpStatus枚举。一般 post方法返回HttpStatus.CREATED,DELETE和PUT方法返回HttpStatus.OK。还可以配置异常处理,见 @ExceptionHandler和@ControllerAdvice

@ExceptionHandler

主要用来处理指定的异常,返回返回指定的HTTP状态码,省得每个controller的方法自己去try catch。一般可以为每个应用定义一个异常基类,然后再定义业务异常,这样这里就可以统一捕获业务异常。

@ExceptionHandler(BizException.class)  @ResponseStatus(HttpStatus.BAD_REQUEST)  public @ResponseBody  ReturnMessage bizExceptionHandler(Exception ex) {      logger.error(ex.getMessage(),ex);      return new ReturnMessage(HttpStatus.BAD_REQUEST.value(),ex.getMessage());  }

不过值得注意的是这种方法仅限于controller的方法调用链产生的异常,如果在spring里头还使用了定时任务啥的,该注解是不会拦截到的。

@ControllerAdvice

配合@ExceptionHandler使用的,用来拦截controller的方法。

@ControllerAdvice public class ErrorController {      private static final Logger logger = LoggerFactory.getLogger(ErrorController.class);      @ExceptionHandler(BizException.class)     @ResponseStatus(HttpStatus.BAD_REQUEST)     public @ResponseBody     ReturnMessage bizExceptionHandler(Exception ex) {         logger.error(ex.getMessage(),ex);         return new ReturnMessage(HttpStatus.BAD_REQUEST.value(),ex.getMessage());     }      @ExceptionHandler(Exception.class)     @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)     public @ResponseBody     ReturnMessage serverExceptionHandler(Exception ex) {         logger.error(ex.getMessage(),ex);         return new ReturnMessage(HttpStatus.INTERNAL_SERVER_ERROR.value(),ex.getMessage());     } }

以上就是Java Spring的JavaConfig注解是怎样的,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

注解 支持 配置 方法 就是 处理 业务 功能 参数 字段 更多 格式 知识 篇文章 类型 应用 开发 实用 必要 清一色 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技股 华服互联网科技怎么样 科技和互联网公司 互联网科技保险 金诺互联网科技 关于新基建和互联网科技 奇士达互联网科技 互联网金融和金融科技 哈尔滨秒房互联网科技有限公司 福州新华互联网科技学校 知乎 金融科技与互联网金融相同和不同 互联网时代科技改变生活 贵州叶脉互联网科技有限公司所属行业 荆州市昕露互联网络科技有限公司 语蝶互联网科技有限公司 伊宁互联网科技做什么的 雨阳互联网卡科技有限公司 互联网科技博主张洲 上海互联网科技园景观 互联网科技创新方面的资料 小米移动互联网科技园 上海卓越科技互联网 互联网科技公司税收优惠 平安科技 互联网 成都玖崟互联网科技有限公司乐商圈怎么样 互联网系的金融科技公司 南平创想时代互联网科技有限公司 互联网科技数字货币 江苏互联网智能科技产品出厂价 互联网科技职业技能培训学校
0