从侦听器内部访问外部类,可以通过在侦听器内部定义一个内部类,然后通过内部类访问外部类的属性或方法。这种方法可以让我们在 Spring Boot 中实现跨域访问,并且不会影响外部类的加载。
以下是一个示例:
ExternalClass
:package com.example.demo;
public class ExternalClass {
public String getName() {
return "Hello, world!";
}
}package com.example.demo;
public class InternalClass {
private ExternalClass externalClass = new ExternalClass();
public String getName() {
return externalClass.getName();
}
}package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Component
public static class InternalClassListener {
@Autowired
private InternalClass internalClass;
public String getName() {
return internalClass.getName();
}
}
}在上述示例中,我们在 Spring Boot 启动类中注册了一个名为 InternalClassListener
的监听器,它会自动获取并调用 InternalClass
类中的 getName()
方法。InternalClass
:@SpringBootApplication
注解开启 Spring Boot 的自动装配功能,并将 InternalClass
组件注册到容器中:InternalClassListener
的 getName()
方法,即可看到外部类的 getName()
方法被正确调用:http://localhost:8080/name在上述示例中,访问 http://localhost:8080/name
将输出 Hello, world!
,表明从侦听器内部访问外部类的方法被正确调用。领取专属 10元无门槛券
手把手带您无忧上云