我正在尝试生成Spring Boot配置代码来解决这个问题。这是我到目前为止得到的:
//@Configuration <- trying to add this through BB
public class GeneratedConfigBase {
@Bean
public Object hello() {
System.out.println("hello");
return new Object();
}
}
@SpringBootApplication
public class TestApp {
public static void main(String[] args) throws Exception {
generateConf();
SpringApplication.run(TestApp.class, args);
}
private static void generateConf() {
new ByteBuddy()
.subclass(GeneratedConfigBase.class)
.name("com.example.GeneratedConfig")
.annotateType(AnnotationDescription.Builder.ofType(Configuration.class).build())
.make()
.load(TestApp.class.getClassLoader(), ClassLoadingStrategy.UsingLookup.of(
MethodHandles.privateLookupIn(GeneratedConfigBase.class, MethodHandles.lookup()
));
}
}
上面的内容在运行应用程序时不会打印“hello”。我完全不确定load()
部分,但是Spring Boot可能出于多种原因无法获取配置。任何见解都将不胜感激。
Spring通过遍历类文件来扫描类路径。通过这些扫描,您生成的类将不可见,它没有类文件表示。
要使您的类可见,您需要显式注册它。I thibk Spring为此目的提供了一个构建器,您目前在其中运行一个主类。