Java 顺序有区别吗?

Java 顺序有区别吗?,java,spring-security,Java,Spring Security,我正在学习Spring,想知道当我更改这两个authorizeRequests()方法的顺序时,为什么会有差异: 这很好: security.authorizeRequests() .antMatchers("/css/**") .permitAll(); security.authorizeRequests() .anyRequest() .authenticated(); 这并不是: security.authorizeRequests() .an

我正在学习Spring,想知道当我更改这两个authorizeRequests()方法的顺序时,为什么会有差异:

这很好:

security.authorizeRequests()
    .antMatchers("/css/**")
    .permitAll();

security.authorizeRequests()
    .anyRequest()
    .authenticated();
这并不是:

security.authorizeRequests()
    .anyRequest()
    .authenticated();

security.authorizeRequests()
    .antMatchers("/css/**")
    .permitAll();

我所说的“不工作”的意思是,在我的登录页面中,在使用第二个示例时没有应用CSS。为什么这两个方法的顺序实际上很重要?

当http.authorizeRequests()方法的多个子对象按声明顺序考虑每个匹配器时。在第二个示例中,它定义了每个需要身份验证的请求

这些规则是按照中定义的顺序考虑的。将采用匹配的第一条规则。在第二个示例中,每个请求都需要身份验证。看,我现在明白了,这些规则应该从最具体的定义到最一般的定义,所以当沿途没有任何匹配时,应用最后一条规则。谢谢:)作为一个例子,你可以看到: