【问题标题】:Adding Bean to Start Up of Spring Boot Using Byte Buddy使用 Byte Buddy 添加 Bean 以启动 Spring Boot
【发布时间】:2020-01-15 21:42:41
【问题描述】:

我只是想检测我的 spring-boot 应用程序。我想在主类中添加一个@Bean。目的是将跟踪器初始化为bean的一部分

最初尝试了以下

new AgentBuilder.Default()
                    .type(ElementMatchers.nameStartsWith("my.package.name"))
                    .transform((builder, typeDescription, classLoader, module) -> builder.visit(
                            Advice.to(BootUpInterceptor.class)
                                    .on(hasMethodName("main"))

                            )


                    ).installOn(instrumentation);


@Advice.OnMethodEnter
    static void initializeTracerAtMain(@Advice.Origin String methodName) throws Exception{
        System.out.println("Initializing Tracer in  Method "+methodName);

// Tracer Initializers 
    }

基本上正在初始化jaeger 跟踪器的配置。这是有效的,但我需要使用GlobalTracer 来注册跟踪器。

如何将此初始化程序作为 bean 添加到我现有的 main classs 中?我错过了什么吗?

【问题讨论】:

    标签: java spring-boot instrumentation byte-buddy javaagents


    【解决方案1】:

    如果您有一个 Java 配置类,您可以检测它并使用 defineMethod 添加一个 @Bean-annotated 方法。或者,您可以检测应用程序上下文的构造函数并在退出通知中显式注册 bean。

    【讨论】:

    • 我不能使用defineMethod 在我的应用程序主类中添加@Bean 注释方法吗?你能给我举个例子吗?
    猜你喜欢
    • 1970-01-01
    • 2022-07-12
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 2018-03-22
    • 2023-03-21
    • 1970-01-01
    • 2017-06-18
    相关资源
    最近更新 更多