在开发Java程序,尤其是Java EE应用的时候,总是免不了与各种配置文件打交道。java注解则帮我们使之更整洁,不会配置文件满天飞了。 下面这篇文章主要介绍了详细介绍Spring中的JavaConfig注解,需要的朋友可以参考借鉴,下面来一起看看吧。
前言
大家都知道传统spring一般都是基于xml配置的,不过后来新增了许多JavaConfig的注解。特别是springboot,基本都是清一色的java config,不了解一下,还真是不适应。这里备注一下。
@RestController
spring4为了更方便的支持restfull应用的开发,新增了RestController的注解,比Controller注解多的功能就是给底下的RequestMapping方法默认都加上ResponseBody注解,省得自己再去每个去添加该注解。
@Configuration
这个标注该类是spring的配置类,本身自带Component注解
@ImportResource
对应的xml
<import resource="applicationContext-ehcache.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
<context:component-scan base-package="com.xixicat.app"/>
该配置自动包含了如下配置的功能:
<context:annotation-config/>
就是向Spring容器注册AutowiredAnnotationBeanPostProcessor( 使用@Autowired必须注册 )、CommonAnnotationBeanPostProcessor( 使用@Resource 、@PostConstruct、@PreDestroy等必须注册 )、PersistenceAnnotationBeanPostProcessor( 使用@PersistenceContext必须注册 ) 以及RequiredAnnotationBeanPostProcessor( 使用@Required必须注册 )这4个BeanPostProcessor。
值得注意的是 Spring3.1RC2版本 是不允许注解Configuration的类在ComponentScan指定的包范围内的,否则会报错。
@Bean
对应的xml如下:
<bean id="objectMapper" class="org.codehaus.jackson.map.ObjectMapper" />
@EnableWebMvc
对应的xml如下:
<mvc:annotation-driven />
该配置自动注册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()); } }
总结
Atas ialah kandungan terperinci 详细介绍Spring中的JavaConfig注解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

java实现定时任务Jdk自带的库中,有两种方式可以实现定时任务,一种是Timer,另一种是ScheduledThreadPoolExecutor。Timer+TimerTask创建一个Timer就创建了一个线程,可以用来调度TimerTask任务Timer有四个构造方法,可以指定Timer线程的名字以及是否设置为为守护线程。默认名字Timer-编号,默认不是守护线程。主要有三个比较重要的方法:cancel():终止任务调度,取消当前调度的所有任务,正在运行的任务不受影响purge():从任务队

一、@RequestParam注解对应的axios传参方法以下面的这段Springjava代码为例,接口使用POST协议,需要接受的参数分别是tsCode、indexCols、table。针对这个Spring的HTTP接口,axios该如何传参?有几种方法?我们来一一介绍。@PostMapping("/line")publicList

SpringBoot和SpringCloud都是SpringFramework的扩展,它们可以帮助开发人员更快地构建和部署微服务应用程序,但它们各自有不同的用途和功能。SpringBoot是一个快速构建Java应用的框架,使得开发人员可以更快地创建和部署基于Spring的应用程序。它提供了一个简单、易于理解的方式来构建独立的、可执行的Spring应用

随着技术的更新迭代,Java5.0开始支持注解。而作为java中的领军框架spring,自从更新了2.5版本之后也开始慢慢舍弃xml配置,更多使用注解来控制spring框架。

1.Spring项目的创建1.1创建Maven项目第一步,创建Maven项目,Spring也是基于Maven的。1.2添加spring依赖第二步,在Maven项目中添加Spring的支持(spring-context,spring-beans)在pom.xml文件添加依赖项。org.springframeworkspring-context5.2.3.RELEASEorg.springframeworkspring-beans5.2.3.RELEASE刷新等待加载完成。1.3创建启动类第三步,创

作为一名Java开发者,学习和使用Spring框架已经是一项必不可少的技能。而随着云计算和微服务的盛行,学习和使用SpringCloud成为了另一个必须要掌握的技能。SpringCloud是一个基于SpringBoot的用于快速构建分布式系统的开发工具集。它为开发者提供了一系列的组件,包括服务注册与发现、配置中心、负载均衡和断路器等,使得开发者在构建微

SpringBean的生命周期管理一、SpringBean的生命周期通过以下方式来指定Bean的初始化和销毁方法,当Bean为单例时,Bean归Spring容器管理,Spring容器关闭,就会调用Bean的销毁方法当Bean为多例时,Bean不归Spring容器管理,Spring容器关闭,不会调用Bean的销毁方法二、通过@Bean的参数(initMethod,destroyMethod)指定Bean的初始化和销毁方法1、项目结构2、PersonpublicclassPerson{publicP

spring设计模式有:1、依赖注入和控制反转;2、工厂模式;3、模板模式;4、观察者模式;5、装饰者模式;6、单例模式;7、策略模式和适配器模式等。详细介绍:1、依赖注入和控制反转: 这两个设计模式是Spring框架的核心。通过依赖注入,Spring负责管理和注入组件之间的依赖关系,降低了组件之间的耦合度。控制反转则是指将对象的创建和依赖关系的管理交给Spring容器等等。


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa
