springboot常用注解(springboot 中@Conditional注解如何使用)

发布时间:2025-12-11 02:45:46 浏览次数:2

启动类

packagecom.demo;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;/***Helloworld!**/@SpringBootApplicationpublicclassApp{publicstaticvoidmain(String[]args){SpringApplication.run(App.class,args);}}

1.实现condition接口

packagecom.demo.condition;importorg.springframework.context.annotation.Condition;importorg.springframework.context.annotation.ConditionContext;importorg.springframework.core.type.AnnotatedTypeMetadata;publicclassWindowsConditionimplementsCondition{@Overridepublicbooleanmatches(ConditionContextconditionContext,AnnotatedTypeMetadataannotatedTypeMetadata){Stringproperty=conditionContext.getEnvironment().getProperty("os.name");returnproperty.contains("Window");}}
packagecom.demo.condition;importorg.springframework.context.annotation.Condition;importorg.springframework.context.annotation.ConditionContext;importorg.springframework.core.type.AnnotatedTypeMetadata;publicclassLinuxConditionimplementsCondition{@Overridepublicbooleanmatches(ConditionContextconditionContext,AnnotatedTypeMetadataannotatedTypeMetadata){Stringproperty=conditionContext.getEnvironment().getProperty("os.name");returnproperty.contains("Linux");}}

配置bean对象

packagecom.demo.config;importcom.demo.condition.LinuxCondition;importcom.demo.condition.WindowsCondition;importcom.demo.serviceI.DemoService;importcom.demo.serviceImp.DemoServiceLinuxImp;importcom.demo.serviceImp.DemoServiceWindowImp;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Conditional;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassOSconfig{@Bean@Conditional(LinuxCondition.class)publicDemoServicelinuxCondition(){returnnewDemoServiceLinuxImp();}@Bean@Conditional(WindowsCondition.class)publicDemoServicewinCondition(){returnnewDemoServiceWindowImp();}}

服务接口

packagecom.demo.serviceI;publicinterfaceDemoService{Stringinfo();}

服务接口实现

packagecom.demo.serviceImp;importcom.demo.serviceI.DemoService;publicclassDemoServiceLinuxImpimplementsDemoService{@OverridepublicStringinfo(){return"linux";}}
packagecom.demo.serviceImp;importcom.demo.serviceI.DemoService;publicclassDemoServiceWindowImpimplementsDemoService{@OverridepublicStringinfo(){return"window";}}

控制层按类型注入

packagecom.demo.action;importcom.demo.serviceI.DemoService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassDemoAction{@AutowiredprivateDemoServicedemoService;@RequestMapping(value="health.json")publicStringhealt(){return"{\"status\":\"UP\",\"diskSpace\":{\"status\":\"UP\",\"total\":249769230336,\"free\":71914618880,\"threshold\":10485760},\"db\":{\"status\":\"UP\",\"database\":\"MySQL\",\"hello\":1}}";}@RequestMapping(value="user/info")publicStringinfo(){returndemoService.info();}}

访问接口

关于springboot 中@Conditional注解如何使用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

springboot常用注解
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477