当前位置: 首页 > news >正文

Java开发工作问题整理与记录

1、为什么@Autowired不能注入static成员属性

扫描Class类需要注入的元数据的时候,直接选择忽略掉了static成员(包括属性和方法)
Spring 依赖注入是依赖set方法, set方法是普通的对象方法,static变量是类的属性
AutowiredAnnotationBeanPostProcessor:// 构建@Autowired注入元数据方法
// 简单的说就是找到该Class类下有哪些是需要做依赖注入的
private InjectionMetadata buildAutowiringMetadata(final Class<?> clazz) {...// 循环递归,因为父类的也要管上do {// 遍历所有的字段(包括静态字段)ReflectionUtils.doWithLocalFields(targetClass, field -> {if (Modifier.isStatic(field.getModifiers())) {logger.info("Autowired annotation is not supported on static fields: " + field);}return;...});// 遍历所有的方法(包括静态方法)ReflectionUtils.doWithLocalMethods(targetClass, method -> {if (Modifier.isStatic(method.getModifiers())) {logger.info("Autowired annotation is not supported on static methods: " + method);}return;...});...targetClass = targetClass.getSuperclass();} while (targetClass != null && targetClass != Object.class);...
}

2、static方法里用@Autowire或者@Resource注入的属性

    首先 类加@Component注解,使当前类成为bean
    然后 定义statis类成员
    然后 创建 init()方法,用@PostConstruct注解修饰
    最后init()方法中,把需要加载的类复制给static类

@Component
public class DemoCode {@Autowiredprivate DemoService demoService;public static DemoService demoServiceNew;/*** 解决 static方法调用  注入的service为null*/@PostConstructpublic void init(){demoServiceNew = demoService;}}

3、处理string类型的json串中的反斜杠

导入commons-lang3的jar包

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.8.1</version>
</dependency>

public static void main(String[] args) {String s="{\\\"displayName\\\":\\\"\\\",\\\"id\\\":1401524465412907010,\\\"name\\\":\\\"名称\\\",\\\"source\\\":\\\"\\\",\\\"type\\\":\\\"text\\\",\\\"value\\\":\\\"红细胞计数\\\"}";String tmp = StringEscapeUtils.unescapeJava(s);System.out.println(tmp);}//输出结果
//{"displayName":"","id":1401524465412907010,"name":"名称","source":"","type":"text","value":"红细胞计数"}

4、对象拷贝的方法

    import org.springframework.beans.BeanUtils;

    BeanUtils.copyProperties(原始对象, 新对象);

http://www.lryc.cn/news/138614.html

相关文章:

  • 静态代码扫描持续构建(Jenkins)
  • Git gui教程---汇总篇
  • flink sql checkpoint 调优配置
  • Linux 网络文件共享介绍
  • Qt中如何在qml文件中使用其他的qml文件并创建对象
  • 学习心得04:CUDA
  • OpenCV实现摄像头图像分类(Python版)
  • 计算机竞赛 地铁大数据客流分析系统 设计与实现
  • sonarqube报错http status 500-internal server error,什么原因,怎么解决
  • 工业设计的四个主要阶段,你都知道吗?优漫动游
  • 【DevOps视频笔记】4.Build 阶段 - Maven安装配置
  • linux非GUI模式执行带有jpgc线程组jmeter脚本报错
  • mysql处理json格式的字段,一文搞懂mysql解析json数据
  • 测试数据生成
  • 网安周报|国防承包商Belcan泄露了带有漏洞列表的管理员密码
  • Vue3语法系统进阶 - 全面掌握Vue3特性
  • 第9天----【位运算进阶之----按位取反(~)】(附补码,原码讲解)
  • 如何获取当前 JAR 包的存放位置?
  • 微调llama2模型教程:创建自己的Python代码生成器
  • Java【手撕双指针】LeetCode 57. “两数之和“, 图文详解思路分析 + 代码
  • 大数据(一)定义、特性
  • 【C++】构造函数和初始化列表的性能差距
  • Linux下套接字TCP实现网络通信
  • ❤ vue清除定时器Bug
  • IDEA创建Spring,Maven项目没有resources文件夹
  • Unity 结构少继承多组合
  • 保研之旅2:中科院声学所“声学和信息学科”夏令营
  • android adb自动连接手机安装apk bat
  • 用心维护好电脑,提高学习工作效率
  • 以太坊硬分叉后的可重入漏洞攻击