Qas*_*sim 49 spring annotations spring-security
我看到了使用@Order注释的代码.我想知道关于Spring Security或Spring MVC的这个注释有什么用处.
这是一个例子:
@Order(1)
public class StatelessAuthenticationSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Autowired
private TokenAuthenticationService tokenAuthenticationService;
}
Run Code Online (Sandbox Code Playgroud)
如果我们不使用这个注释,上面提到的类的顺序会发生什么?
Pat*_*ego 60
它用于建议执行优先级.
最高优先级的建议首先运行.数字越低,优先级越高.例如,给定两条"之前"的建议,优先级最高的建议将首先运行.
使用它的另一种方法是订购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())
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到可执行代码:https://github.com/patrikbego/spring-order-demo.git
希望这能进一步澄清它.
输出: -
马自达丰田
@Order注解指定了spring容器加载bean的顺序。顺序(整数)越低,优先级越高。因此 0 的顺序将比 10 的顺序具有更高的优先级。同样,-100 的顺序将比 0 具有更高的优先级。
@Order注释(以及Ordered接口)表示特定的顺序,Spring将按此顺序加载或优先处理Bean。
较低的数字表示较高的优先级。该功能可用于以特定顺序将bean添加到集合中(例如通过@Autowired)。
在您的特定示例中,注释不会更改类本身的任何内容。无论在何处使用此特定类,都将以最高优先级使用它(因为将其设置为“ 1”),这可能是因为在其他类中添加了其他信息,但相关信息的优先级较低。
| 归档时间: |
|
| 查看次数: |
43074 次 |
| 最近记录: |