2026 AI Agent开发完全指南:用TaoToken统一Key打通MCP协议到多Agent协作系统
2026/10/9 2:53:53
看接口是否能调用,或者初始化方法,判断类有没有实例化
package com.example.demo.condition; import com.example.demo.DemoApplication; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Conditional; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.PostConstruct; /** * * @ConditionalOnProperty 的作用是 当指定的配置属性满足条件时, 加载被标注的 Bean;否则,不加载该 Bean。它通常用于根据外部配置动态控制功能的启用或禁用。 * 如果配置文件中 marketing.direct.push.pressureTestingSwitch=true, 则会加载 PushPressureApiTest Bean。 * 如果配置文件中 marketing.direct.push.pressureTestingSwitch=false, 则不会加载 PushPressureApiTest Bean。 * 如果配置文件中未定义 marketing.direct.push.pressureTestingSwitch, 由于 matchIfMissing=true,也会加载 PushPressureApiTest Bean, * 如果没有matchIfMissing=true,则不会加载。 * * @ConditionalOnExpression 的作用是 当指定的 SpEL 表达式计算结果为 true 时, 加载被标注的 Bean;否则,不加载该 Bean。 * 它提供了一种灵活的方式,根据运行时的条件动态地控制 Bean 的创建。 * * @ConditionalOnMissingBean 的作用是 仅当指定类型的 Bean 不存在于 Spring 容器中时, 才会加载被标注的 Bean。 * 它通常用于提供默认的 Bean 定义,同时允许用户通过自定义配置覆盖默认的实现。 * * @ConditionalOnBean 的作用是 仅当指定类型的 Bean 存在于 Spring 容器中时, 才会加载被标注的 Bean。 * 它通常用于依赖某些 Bean 的存在来决定是否加载其他 Bean。 * * @Conditional 的作用是 当指定的条件满足时,加载被标注的 Bean; 否则,不加载该 Bean。 * 它是 Spring 的条件化配置的核心注解,通常与自定义的条件类配合使用。 * */ @RestController @RequestMapping("/api/open/v1/test") //@ConditionalOnProperty(name = "marketing.direct.push.pressureTestingSwitch", havingValue = "true", matchIfMissing = true) //@ConditionalOnExpression("${marketing.direct.push.pressureTestingSwitch:true}") //@ConditionalOnBean(ConditionDemo.class) //@ConditionalOnMissingBean(ConditionDemo.class) @Conditional(MyCondition.class) public class PushPressureApiTest { @PostConstruct public void init() { System.out.println("PushPressureApiTest类实例化了"); } @PostMapping("/push/sendMessage") public String pressure() { return "hello"; } }package com.example.demo.condition; import org.springframework.context.annotation.Condition; import org.springframework.context.annotation.ConditionContext; import org.springframework.core.type.AnnotatedTypeMetadata; public class MyCondition implements Condition { @Override public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { return false; } }package com.example.demo.condition; import org.springframework.stereotype.Component; @Component public class ConditionDemo { }