spring - Spring中@Order注解有什么用?

标签 spring spring-security annotations

我看到了使用 @Order 注释的代码。我想知道这个注解对于 Spring Security 或 Spring MVC 有什么用处。

这是一个例子:

@Order(1)
public class StatelessAuthenticationSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private UserDetailsService userDetailsService;

    @Autowired
    private TokenAuthenticationService tokenAuthenticationService;

}

如果我们不使用这个注解,上面提到的类的顺序会怎样?

最佳答案

用于Advice执行优先级。

最高优先级的建议首先运行。数字越小,优先级越高。例如,给定两条“之前”建议,优先级最高的一条将首先运行。

使用它的另一种方式是订购 Autowired 集合

@Component
@Order(2)
class Toyota extends Car {
    public String getName() {
        return "Toyota";
    }
}

@Component
@Order(1)
class Mazda extends Car {
    public String getName() {
        return "Mazda";
    }
}

@Component
public class Cars {
    @Autowired
    List<Car> cars;

    public void printNames(String [] args) {

        for(Car car : cars) {
            System.out.println(car.getName())
        }
    }
}

您可以在此处找到可执行代码:https://github.com/patrikbego/spring-order-demo.git

希望这能进一步澄清它。

输出:-

马自达丰田

关于spring - Spring中@Order注解有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30328897/

相关文章:

java - 如何配置要使用的事务管理器而不必覆盖所有@Transactional 方法

java - Spring Security中将XML配置转换为java配置以实现全局方法安全

java - 具有 Spring Security 4(java 配置)的 CAS 4 - 在票证授予 SSO 后卡在重定向循环中

java - javax 的 NotNull 在 Java 8 中被移除了吗?

import - Android Studio 中导入子句的黄色突出显示表示什么?

spring - 为 Spring Validator 实现编写 JUnit 测试

java - 如何在执行JAR时外部向spring boot提供mysql主机

java - 错误: org. springframework.web.context.ContextLoader - 上下文初始化失败[context-security.xml]

java - Spring - Http Basic Auth - 将端点标记为公共(public)

java - JDBC4注解在哪里?