Spring中可以复用的工具类&特性记录
Spring 里有用工具类:
GenericTypeResolver 解析泛型类型。核心逻辑还是调用 ResolvableType
ResolvableType 解析泛型类型
BeanWrapper 利用反射修改 JavaBean 的属性值。(支持修改嵌套属性)
public class Foo {
private int id;
private String name;
......
} public static void main(String[] args) {
Foo foo = new Foo(); // org.springframework.beans.BeanWrapper给对象属性赋值
BeanWrapper bw = new BeanWrapperImpl(foo);
bw.setPropertyValue("id", 123); // 给 Foo的id属性赋值 // com.alibaba.dubbo.common.bytecode.Wrapper给对象属性赋值
Wrapper.getWrapper(Foo.class).setPropertyValue(foo, "id", 123); // 给 Foo的id属性赋值
System.out.println(JSON.toJSONString(foo));
}
IntrospectionSupport 设置 JavaBean 属性。 IntrospectionSupport.setProperties(Object target, Map<String, ?> props, String optionPrefix)
org.springframework.core.Constants : 处理 public static final 字段
org.springframework.util.ReflectionUtils :反射相关
org.springframework.util.ReflectionUtils.makeAccessible(this.aspectJAdviceMethod);
取属性值:
@Autowired
private Environment env;
env.getProperty("spring.redis.pool.max-idle")
获取资源文件:
ResourcePatternResolver resourceLoader = new PathMatchingResourcePatternResolver();
Resource[] source = resourceLoader.getResources(filePath); // 支持ant风格的路径匹配(?、*、**)
流处理:
org.springframework.util.StreamUtils (流拷贝、从流中读取数据.....)
通用常量:
org.springframework.http.MediaType
如:APPLICATION_JSON_UTF8_VALUE --> application/json;charset=UTF-8
org.springframework.http.HttpStatus
如:OK(200, "OK")
Junit自动回滚:
@Test
@Rollback
@Transactional
public void testRollback(){
xxxService.insert(instance);
}
-----------------------------------------------------技巧----------------------------------------------------
1. 找一个带命名空间(namespace)配置的处理类,可以从 NamespaceHandler 接口入手,找实现类
例如: <context:component-scan base-package="com.kvn.xx" />
可以从 NamespaceHandler 的实现类中找到 ContextNamespaceHandler
public class ContextNamespaceHandler extends NamespaceHandlerSupport {
@Override
public void init() {
registerBeanDefinitionParser("property-placeholder", new PropertyPlaceholderBeanDefinitionParser());
registerBeanDefinitionParser("property-override", new PropertyOverrideBeanDefinitionParser());
registerBeanDefinitionParser("annotation-config", new AnnotationConfigBeanDefinitionParser());
registerBeanDefinitionParser("component-scan", new ComponentScanBeanDefinitionParser());
registerBeanDefinitionParser("load-time-weaver", new LoadTimeWeaverBeanDefinitionParser());
registerBeanDefinitionParser("spring-configured", new SpringConfiguredBeanDefinitionParser());
registerBeanDefinitionParser("mbean-export", new MBeanExportBeanDefinitionParser());
registerBeanDefinitionParser("mbean-server", new MBeanServerBeanDefinitionParser());
}
}
然后就能找到 component-scan 的处理类为: ComponentScanBeanDefinitionParser
2. springMvc 使用时,如果代码有进行地址重定向(sendRedirect),可以从下面步骤入手(判断是否服务器重定向&&相应的 Controller)
断点打在 DispatcherServlet#doDispatch() ,观察 request 和 response
查看图片
Spring中可以复用的工具类&特性记录的更多相关文章
- Spring中提供的集合工具类util CollectionUtils
转自:https://blog.csdn.net/fangwenzheng88/article/details/78457850 CollectionUtils类 /* * Copyright 200 ...
- 获取Spring容器中Bean实例的工具类(Java泛型方法实现)
在使用Spring做IoC容器的时候,有的类不方便直接注入bean,需要手动获得一个类型的bean. 因此,实现一个获得bean实例的工具类,就很有必要. 以前,写了一个根据bean的名称和类型获取b ...
- 高可用的Spring FTP上传下载工具类(已解决上传过程常见问题)
前言 最近在项目中需要和ftp服务器进行交互,在网上找了一下关于ftp上传下载的工具类,大致有两种. 第一种是单例模式的类. 第二种是另外定义一个Service,直接通过Service来实现ftp的上 ...
- spring boot 结合Redis 实现工具类
自己整理了 spring boot 结合 Redis 的工具类引入依赖 <dependency> <groupId>org.springframework.boot</g ...
- OpenJDK源码研究笔记(四)-编写和组织可复用的工具类和方法
本篇主要讲解java.util.Arrays这个针对数组的工具类. 1.可复用的工具类和方法. 这个工具类里,包含很多针对数组的工具方法,如 排序.交换.二分查找.比较.填充.复制.hashcode ...
- commons-collections包中的常用的工具类
commons-collections包中的常用的工具类 <dependency> <groupId>commons-collections</groupId> & ...
- Hutool中那些常用的工具类和方法
Hutool中那些常用的工具类和方法 Hutool是一个Java工具包,它帮助我们简化每一行代码,避免重复造轮子.如果你有需要用到某些工具方法的时候,不妨在Hutool里面找找,可能就有.本文将对Hu ...
- spring项目中 通过自定义applicationContext工具类获取到applicationContext上下文对象
spring项目在服务器启动的时候 spring容器中就已经被创建好了各种对象,在我们需要使用的时候可以进行调用. 工具类代码如下 import org.springframework.beans.B ...
- 项目ITP(四) javaweb http json 交互 in action (服务端 spring 手机端 提供各种工具类)勿喷!
前言 系列文章:[传送门] 洗了个澡,准备写篇博客.然后看书了.时间 3 7 分.我慢慢规律生活,向目标靠近. 很喜欢珍惜时间像叮当猫一样 正文 慢慢地,二维码实现签到将要落幕了.下篇文章出二维码实 ...
随机推荐
- Oracle 语句中“||”代表什么啊?
Oracle 语句中“||”代表什么啊? Oracle 语句中“||”代表什么啊?跟ServerSQL中的字符串的连接符“+”是一个概念么? 1. 恩是的 是一个含义...select '1'||'2 ...
- 目录_Java内存分配(直接内存、堆内存、Unsafel类、内存映射文件)
1.Java直接内存与堆内存-MarchOn 2.Java内存映射文件-MarchOn 3.Java Unsafe的使用-MarchOn 简单总结: 1.内存映射文件 读文件时候一般要两次复制:从磁盘 ...
- WebGL 利用FBO完成立方体贴图。
这篇主要记录WebGL的一些基本要点,顺便也学习下如何使用FBO与环境贴图.先看下效果图(需要支持WebGL,Chrome,火狐,IE11). 主要实现过程如下,先用FBO输出当前环境在立方体纹理中, ...
- 模拟ajax实现网络爬虫——HtmlUnit
最近在用Jsoup抓取某网站数据,可有些页面是ajax请求动态生成的,去群里问了一下,大神说模拟ajax请求即可.去网上搜索了一下,发现了这篇文章,拿过来先用着试试. 转帖如下: 网上关 ...
- 文本编辑工具(sublime text 2)
学习地址: http://www.iplaysoft.com/sublimetext.html 下载地址:http://www.sublimetext.com
- ITSM运营实施案例 - 汽车行业
M公司是在汽车行业知名TOP企业,在日常运营过程中有如下问题: ******************************************************************** ...
- 【转帖】Windows下PostgreSQL安装图解
Windows下PostgreSQL安装图解 这篇文章主要为大家介绍了如果在Windows下安装PostgreSQL数据库的方法,需要的朋友可以参考下 现在谈起免费数据库,大多数人首先 ...
- nodemon是个好东西
不说话,直接上图: 安装 使用
- 为什么要有handler机制?handler机制的原理
为什么要有handler机制? 在Android的UI开发中,我们经常会使用Handler来控制主UI程序的界面变化.有关Handler的作用,我们总结为:与其他线程协同工作,接收其他线程的消息并通过 ...
- Java如何显示线程状态?
在Java编程中,如何显示线程状态? 以下示例演示如何使用Thread类的isAlive()和getStatus()方法显示线程的不同状态. package com.yiibai; class MyT ...