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

这篇具有很好参考价值的文章主要介绍了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 {

    @Autowired
    private DemoService demoService;

    public static DemoService demoServiceNew;

    /**
     * 解决 static方法调用  注入的service为null
     */
    @PostConstruct
    public 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(原始对象, 新对象);文章来源地址https://www.toymoban.com/news/detail-669725.html

到了这里,关于Java开发工作问题整理与记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • go语言开发工作中常用命令

    Go 编程语言中的常用命令主要用于构建、测试、运行和管理项目。以下是一些常见的 Go 命令,以及它们对项目的用途: go run 用途: 编译并运行 Go 程序。 示例:  go build 用途: 编译 Go 程序,生成可执行文件。 示例:  go test 用途: 运行测试文件。 示例:  go get 用途: 下

    2024年01月19日
    浏览(28)
  • B/S架构,java源码,医院绩效管理系统,覆盖了医院绩效管理工作“PDCA”循环的全过程,支持二次开发

     医院绩效管理系统源码       医院绩效管理系统以国家医院绩效管理考核政策法规为依据,结合医院管理实践,以经济管理指标为核心,医疗质量、安全、效率、效益管理为重点,特别强调持续改进(PDCA)管理理念。实现医院绩效管理数据采集的自动化和绩效评估数字化,

    2024年02月22日
    浏览(31)
  • ChatGPT工作提效之小鹅通二次开发批量API对接解决方案(学习记录同步、用户注册同步、权益订购同步、开发文档)

    ChatGPT工作提效之初探路径独孤九剑遇强则强 ChatGPT工作提效之在程序开发中的巧劲和指令(创建MySQL语句、PHP语句、Javascript用法、python的交互) ChatGPT工作提效之生成开发需求和报价单并转为Excel格式 ChatGPT是一种实时对话生成模型,能够帮助用户快速地回答问题、提供信息,并

    2024年02月06日
    浏览(28)
  • 工业互联网项目开发工作流程及核心问题

    工业互联网项目开发全流程V3.0   工业互联网项目开发工作流程及核心问题 一、需求分析 1、共享平台需求分析 这个平台要解决什么问题? 这个平台的用户群体是谁? 这个平台应该具备哪些主要功能? 这个平台的使用场景是什么? 这个平台如何与现有的系统集成? 2、需求

    2024年02月09日
    浏览(29)
  • Android应用程序中使用 Gemini Pro AI开发——2年工作经验如何淘汰10年工作经验的Android开发?

    上周,谷歌推出了最强大的基础模型 Gemini 。 Gemini 是多模式的AI——它可以接受文本和图像输入。 谷歌为 Android 开发者引入了一种在设备上,利用最小模型Gemini Nano的方法。此功能可通过 AICore 在部分设备上使用,这是一项处理模型管理、运行时、安全功能等的系统服务,可

    2024年01月18日
    浏览(54)
  • 从事软件开发工作的一些感悟

    随着科技的飞速发展,计算机领域成为了一个充满机遇和挑战的领域。对于计算机这个行业,我一直有着浓厚的兴趣,这份兴趣驱使我不断学习,不断成长。在这篇文章中,我将分享我的编程经历以及一些建议,希望能够给那些刚刚踏入编程领域的人一些启发。 我的编程之路

    2024年02月08日
    浏览(37)
  • vue前端开发准备工作ing...

    在项目开始前需要将项目的包管理工具问题解决,这里我使用的包管理工具是yarn。 安装yarn 在你的vue文件目录下的终端安装 npm i -g yarn 创建项目 如果你使用的npm包管理工具就使用如下命令创建项目 如果是yarn: 安装依赖 在你创建的项目文件下的终端安装 npm: npm install yarn:

    2024年01月17日
    浏览(32)
  • redis在日常开发工作中的常见用法

    redis是一款内存型数据库,在开发工作中经常用到,功能强大; 特别开一篇文章用来记录一下它的常见用法,算是一种总结; 它最主要的特点就是高可用的,速度快,分布式;有人说速度快,能有我本地的全局静态变量快?但是在大型的项目中,多个服务器部署时,其他服务

    2024年02月09日
    浏览(25)
  • 前端开发的工作职责精选【10篇】

      前端开发的工作职责1 1、使用Div+css并结合Javascript负责产品的前端开发和页面制作; 2、熟悉W3C标准和各主流浏览器在前端开发中的差异,能熟练运用DIV+CSS,提供针对不同浏览器的前端页面解决方案; 3、负责相关产品的需求以及前端程序的实现,提供合理的前端架构; 4、与产

    2024年02月13日
    浏览(29)
  • 前端开发是做什么的?工作职责

    想要了解前端从业者的工作职责,需要从一个完整网站应用产生流程入手,一个网站应用从无到有的过程大致如下 : 1)产品经理与甲方反复沟通交流,逐步确定产品需求完成设计草图; 2)产品经理根据需求和草图进行分析,提交 PRD(需求文档),并与开发人员协商软件功

    2023年04月10日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包