我用的是Spring Boot1.5.9。
有办法打开/关闭吗 @Controller
以及 @Services
?
例如 @ConditionalOnProperty
, @Conditional
为了豆子。
@ConditionalController // <--- something like this
@RestController
public class PingController {
@Value("${version}")
private String version;
@RequestMapping(value = CoreHttpPathStore.PING, method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<Map<String, Object>> ping() throws Exception {
HashMap<String, Object> map = new HashMap<>();
map.put("message", "Welcome to our API");
map.put("date", new Date());
map.put("version", version);
map.put("status", HttpStatus.OK);
return new ResponseEntity<>(map, HttpStatus.OK);
}
}
然后使用一些配置bean来加载它。
3条答案
按热度按时间ff29svar1#
@ConditionalOnProperty
应该也适用于控制器(或服务),因为它也是一个springbean。添加到pingcontroller
和application.properties来打开/关闭它
qltillow2#
您想尝试以编程方式加载bean吗?
您可以使用这两种机制之一访问应用程序上下文
@自动连线专用应用程序上下文appcontext;
或者通过扩展applicationware创建类似于bean工厂的东西
公共类applicationcontextprovider实现applicationcontextaware{
一旦有了应用程序上下文的句柄,就可以通过编程方式将bean添加到上下文中。
m3eecexj3#
默认情况下,在spring中,所有定义的bean及其依赖项都是在创建应用程序上下文时创建的。
我们可以通过配置一个带有延迟初始化的bean来关闭它,bean只会在需要时被创建,并且它的依赖项会被注入。
您可以通过配置
application.properties
.将属性值设置为true意味着应用程序中的所有bean都将使用延迟初始化。
所有定义的bean都将使用延迟初始化,但我们显式配置的bean除外
@Lazy(false)
.或者你可以通过
@Lazy
接近。当我们把@Lazy
注解覆盖@Configuration
类,它指示@Bean
注解应该延迟加载。