做门户网站需要学什么知识,360推广登录入口官网,企业网站网址举例,wordpress my02visitors1.背景 某项目,spring架构,有2个不同的WebAppApplication入口,大部分service类共用,小部分类有区别,只需要在一个应用中加载,不需要在另一个应用中加载.
2.实现代码 自定义限制注解
package mis.shared.annotation;import java.lang.annotation.ElementType;
import java.lan…1.背景 某项目,spring架构,有2个不同的WebAppApplication入口,大部分service类共用,小部分类有区别,只需要在一个应用中加载,不需要在另一个应用中加载.
2.实现代码 自定义限制注解
package mis.shared.annotation;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;/*** description 限制bean在指定application下加载* webAppApplication* webSmartApplication* date 2023/08/04*/
Target({ElementType.TYPE, ElementType.METHOD})
Retention(RetentionPolicy.RUNTIME)
public interface LimitBeanLoad {String value() default webSmartApplication;
}实现Spring的Condition接口
package mis.shared.annotation;import com.bestvike.linq.Linq;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.annotation.MergedAnnotation;
import org.springframework.core.type.AnnotatedTypeMetadata;/*** description spring加载bean条件类* date 2023/08/04*/
Slf4j
public class SpringLoadBeanCondition implements Condition {Overridepublic boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {try {//获取注解中指定的应用名称MergedAnnotationLimitBeanLoad limitAnnotation metadata.getAnnotations().get(LimitBeanLoad.class);String annotationAppName (String) limitAnnotation.getValue(value).orElse(null);//判断当前应用是否符合指定String[] beanDefinitionNames context.getRegistry().getBeanDefinitionNames();long limitAppCount Linq.of(beanDefinitionNames).where(p - p.equals(annotationAppName)).stream().count();return limitAppCount 0;} catch (Exception e) {}return true;}}使用注解