Spring Boot本身不支持在运行时动态加载或卸载Controller。Spring Boot应用在启动时会进行一次性的初始化,加载所有的配置和Bean。
但是,你可以使用Spring Framework的RequestMappingHandlerMapping来动态注册或移除请求映射。以下是一个简单的例子:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
 
@Service
public class DynamicControllerService {
 
    @Autowired
    private RequestMappingHandlerMapping handlerMapping;
 
    @Autowired
    private ApplicationContext applicationContext;
 
    public void addController(Class<?> controllerClass) {
        // 动态注册Controller
        handlerMapping.registerMapping(
                RequestMapping.of(new String[]{"/dynamic"}),
                controllerClass.newInstance(),
                method);
    }
 
    public void removeController(Class<?> controllerClass) {
        // 动态移除Controller的映射
        handlerMapping.unregisterMapping(mapping);
    }
}
 
@RestController
public class DynamicController {
    @RequestMapping("/")
    public String handleRequest() {
        return "Handled by Dynamic Controller";
    }
}在这个例子中,DynamicControllerService类负责动态注册或移除Controller。通过RequestMappingHandlerMapping的registerMapping和unregisterMapping方法,可以在运行时控制请求映射。
请注意,这种方法并不是标准的做法,且可能会带来意想不到的副作用,因为你在破坏Spring Boot的静态初始化过程。在实际应用中,请确保你完全理解这样做的后果,并且它确实符合你的需求。