From 014d32d18632ba0b850028eef686eaad51cb7248 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=82=85=E5=93=A5?= <184172133@qq.com> Date: Sun, 22 Aug 2021 16:17:43 +0800 Subject: [PATCH] Add new file --- .../20210822.md" | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 "notes/\350\257\273\350\200\205\346\217\220\351\227\256/20210822.md" diff --git "a/notes/\350\257\273\350\200\205\346\217\220\351\227\256/20210822.md" "b/notes/\350\257\273\350\200\205\346\217\220\351\227\256/20210822.md" new file mode 100644 index 0000000..b72517a --- /dev/null +++ "b/notes/\350\257\273\350\200\205\346\217\220\351\227\256/20210822.md" @@ -0,0 +1,19 @@ +如何在项目中动态创建Java类,并注册进Spring容器,例如动态创建一个controller类? + +1. 注册自定义的Bean到Spring容器中,需要实现 FactoryBean 接口,在getObject()创建你的Bean对象。 +2. 定义代理Bean定义 GenericBeanDefinition,把定义的信息通过工具方法注册到Spring容器,BeanDefinitionReaderUtils.registerBeanDefinition(definitionHolder, registry); +3. 动态生成Java类需要用到字节码工具,ASM、Javassist、Byte-buddy,这几个都可以 + +参考我的文章: +怎么把Bean塞到Spring容器?https://mp.weixin.qq.com/s/wmB_uXDtDLbe4tYzSATDmw +字节码编程操作 http://mp.weixin.qq.com/mp/homepage?__biz=MzIxMDAwMDAxMw==&hid=16&sn=7533d469a7c4abd1b2b7f8a5eb091e65&scene=18#wechat_redirect + +--- + +小傅哥,请问大厂的默认jar包启动参数都会配置哪些呀,JVM参数调优有总结方法论吗? + +1. 通常并不启动jar包,都是把war包部署上去,从代码的打包过程到上线都是使用部署上线工具,如:Jenkins +2. JVM 通常情况下并不会去调优,都是一套默认配置,比如你的启动参数内存大小。也不会因为程序内存占用大了就去调JVM,基本都是对程序进行优化。所以这块暂时没有更多的真实场景去调JVM的情况。 +3. 如果是面试一般会考察调优包括:调整GC类型和内存分配、年轻代和年老代的分配比等。也有一些常用命令:jps、jcmd、jinfo、jmap、jhat、jstack等,https://mp.weixin.qq.com/s/rTuEp8A35_xnx1HA_K8zQg + +后续我在看看,有没有一些JVM运维调优的策略和手段,整理好后补充到这里。 -- GitLab