java中configmanager_Spring4新的javaConfig注解

1、@RestController

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

2、@Configuration

这个标注该类是spring的配置类(IOC容器),本身自带Component注解

3、@ImportResource

对应的xml

4、@ComponentScan

对应的xml

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

就是向Spring容器注册4个BeanPostProcessor

AutowiredAnnotationBeanPostProcessor( 使用@Autowired必须注册 )

CommonAnnotationBeanPostProcessor( 使用@Resource 、@PostConstruct、@PreDestroy等必须注册)

PersistenceAnnotationBeanPostProcessor( 使用@PersistenceContext必须注册 )

RequiredAnnotationBeanPostProcessor( 使用@Required必须注册 )

5、@Bean

对应的xml如下:

6、@EnableWebMvc

对应的xml如下:

该配置自动注册两个bean,以支持@Controller注解的使用

DefaultAnnotationHandlerMapping( 来注册handler method和request的mapping关系 )

AnnotationMethodHandlerAdapter( 在实际调用handler method前对其参数进行处理 )。

主要的作用如下:

可配置的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的话 )

7、@ContextConfiguration

主要在junit测试时指定java config

@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({ "classpath*:spring/*.xml","classpath:applicationContext.xml"})

@TransactionConfiguration(transactionManager = "mybatisTransactionManager", defaultRollback = false)

public class AppBaseTest {

//......

}

8、@ResponseStatus

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

9、@ExceptionHandler

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

@ExceptionHandler(BizException.class)

@ResponseStatus(HttpStatus.BAD_REQUEST)

@ResponseBody

public ReturnMessage bizExceptionHandler(Exception ex) {

logger.error(ex.getMessage(),ex);

return new ReturnMessage(HttpStatus.BAD_REQUEST.value(),ex.getMessage());

}

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

10、@ControllerAdvice

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

@ControllerAdvice

public class ErrorController {

private static final Logger logger = LoggerFactory.getLogger(ErrorController.class);

@ExceptionHandler(BizException.class)

@ResponseStatus(HttpStatus.BAD_REQUEST)

@ResponseBody

public 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)

@ResponseBody

public ReturnMessage serverExceptionHandler(Exception ex) {

logger.error(ex.getMessage(),ex);

return new ReturnMessage(HttpStatus.INTERNAL_SERVER_ERROR.value(),ex.getMessage());

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328434.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第9步 spring 配置 springmvc配置

spring配置 有5个网址 springboot 再讲一遍 spring的学习最好的方法是运行 官方demo 学习它里面的配置 。 我们不可能一下子理解spring里面的源码 spring配置直接复制好了 视频老师也是从官方demo中复制过来的 直接复制 **********************************…

eclipse开发jsp默认编码设置

转载自 eclipse开发jsp默认编码设置 在eclipse中新建一个jsp页面时,一般默认的编码不是utf-8,而我们一般项目都是统一采用utf-8编码,如果要一个个改很麻烦,大家一般都会想到如果更改默认设置。网上搜索一般是在:wind…

java threadlocal 缺点_Java的ThreadLocal如何在后台实现?

小编典典这里的所有答案都是正确的,但是有些令人失望,因为它们多少掩盖了聪明ThreadLocal的实现是多么的明智。我只是在寻找源代码,ThreadLocal并且对它的实现方式印象深刻。天真的实现如果我要求您ThreadLocal在javadoc中描述的给定API的基础…

第10步 (1)logback.xml日志配置(2) ftp(上传文件)服务器配置(3) idea注入和自动编译配置(4)项目提交gitee(5)fe助手和restlet client

****************************************************************************************************************************************** 1.直接复制 logback.xml 比较简单 <?xml version"1.0" encoding"UTF-8"?> <configuratio…

第11步 git推送失败 用户模块开发

别忘了git push ************************************************************************************************************************************* 1. 用户模块开发 共11个接口 用户 status 0 则是正确响应 其他1等是错误 用户信息是session中拿过来的 use…

java 继承 实现 会重写 方法吗_java 中继承,组合,重载,重写的实现原理 (转)...

我们知道&#xff0c;继承&#xff0c;组合&#xff0c;重载&#xff0c;重写是java语言的面向对象实现的基本特征。 那么在java内部&#xff0c;究竟是如何实现这些面对对象的基本特征的呢&#xff1f;继承和组合是面向对象中代码复用的主要实现方式&#xff0c;他们可以达到类…

Java 调用EXE

转载自 Java 调用EXE 使用Runtime.getRuntime().exec()方法可以在java程序里运行外部程序. 该方法有6个可访问版本: 1.exec(String command) 2.exec(String command, String envp[], File dir) 3.exec(String cmd, String envp[]) …

基于SignalR的消息推送与二维码描登录实现

1 概要说明 使用微信扫描登录相信大家都不会陌生吧&#xff0c;二维码与手机结合产生了不同应用场景&#xff0c;基于二维码的应用更是比较广泛。为了满足ios、android客户端与web短信平台的结合&#xff0c;特开发了基于SinglarR消息推送机制的扫描登录。本系统涉及到以下知识…

Java调用exe阻塞

转载自 Java调用exe阻塞 今天遇到了个奇怪的问题&#xff0c;用VC写了个小程序&#xff0c;编译成exe文件&#xff0c;然后用Java去调&#xff0c;居然卡住不运行了。如果双击这个exe程序&#xff0c;单独让它运行&#xff0c;是可以的&#xff0c;那么为什么用Java调用就不好…

java中iscontinue意思_Java 中return、continue和break的区别

写在前面&#xff1a;适合Java初学者&#xff0c;大神就别来了。今天同事突然问我return和break的区别&#xff0c;以前觉得随口都能说出来的东西&#xff0c;今天突然卡了&#xff0c;记得模模糊糊&#xff0c;只能说出个大概&#xff0c;所以这里做一个总结&#xff0c;还是那…

第13步 用户模块前端(Admin)

bootstrap 就不用谢css样式 了 都写好了 http://www.bootcss.com/ https://www.bootcdn.cn/ <meta charset"utf-8"> <!-- 防止网站在手机端看变形了 --> <meta name"viewPort" content"widthdevice-width,initial…

ASP.NET Core 静态文件及JS包管理器(npm, Bower)的使用

在 ASP.NET Core 中添加静态文件 虽然ASP.NET主要大都做着后端的事情&#xff0c;但前端的一些静态文件也是很重要的。在ASP.NET Core中要启用静态文件&#xff0c;需要Microsoft.AspNetCore.StaticFiles组件。可以通过Nuget添加&#xff0c;或者在project.json配置文件中添加&…

Java 正则表达式匹配模式[贪婪型、勉强型、占有型]

转载自 Java 正则表达式匹配模式[贪婪型、勉强型、占有型]Greediness&#xff08;贪婪型&#xff09;&#xff1a;最大匹配 X?、X*、X、X{n&#xff0c;} 是最大匹配。例如你要用 “<.>” 去匹配 “a<tr>aava </tr>abb”&#xff0c;也许你所期待的结果是想…

新闻发布项目——分页公共类(PageUitl )

package bdqn.newsManageServlet.Util; /*** 分页的类* author Administrator**/ public class PageUitl {private int pagesize;//页大小private int pageindex1;//页码private int recordCount;//总记录数private int totalPageCount;//总页数//计算总页数public int getTota…

java代码配置 mybatis_配置简介(MyBatis源码篇)

1 SqlSessionFactoryBuilder#上篇例子中&#xff0c;我们以SqlSessionFactoryBuilder去创建SqlSessionFactory, 那么&#xff0c;我们就先从SqlSessionFactoryBuilder入手&#xff0c; 咱们先看看源码是怎么实现的。SqlSessionFactoryBuilder源码片段&#xff1a;public class …

js 方法传递对象参数

js 方法传递对象参数 2017年12月06日 16:35:39 qq_26676207 阅读数&#xff1a;7696 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/qq_26676207/article/details/78732117 第一步&#xff1a; //通过JSON.stringify()方…

Java8中 Date和LocalDateTime的相互转换

转载自 Java8中 Date和LocalDateTime的相互转换一.在Java 8中将Date转换为LocalDateTime 方法1: 将Date转换为LocalDatetime&#xff0c;我们可以使用以下方法&#xff1a; 1.从日期获取ZonedDateTime并使用其方法toLocalDateTime&#xff08;&#xff09;获取LocalDateTime 2…

java 时分秒格式小时8_Java里得到00:00:00格式的时分秒的Timestamp

复制代码 代码如下:import java.sql.Timestamp;import java.text.SimpleDateFormat;import java.util.TimeZone;public class Test {public static void main(String[] args) {SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");long t System.cu…