小编Vik*_*ash的帖子

除了保存代码行之外,lambda表达式还有什么用处吗?

除了保存代码行之外,lambda表达式还有什么用处吗?

lambda提供的特殊功能是否解决了不容易解决的问题?我见过的典型用法是代替写这个:

Comparator<Developer> byName = new Comparator<Developer>() {
  @Override
  public int compare(Developer o1, Developer o2) {
    return o1.getName().compareTo(o2.getName());
  }
};
Run Code Online (Sandbox Code Playgroud)

我们可以使用lambda表达式来缩短代码:

Comparator<Developer> byName =
(Developer o1, Developer o2) -> o1.getName().compareTo(o2.getName());
Run Code Online (Sandbox Code Playgroud)

java lambda java-8

117
推荐指数
5
解决办法
2万
查看次数

记住 - 我不工作..抛出java.lang.IllegalStateException:UserDetailsS​​ervice是必需的

按照下面教程的指导,我实现了remember-me功能

http://www.baeldung.com/spring-security-remember-me
Run Code Online (Sandbox Code Playgroud)

但是当我运行程序时,它会抛出java.lang.IllegalStateException:UserDetailsS​​ervice是必需的.而UserDetails服务正确实施.以下是userDetailsWebService的配置方法和注册.

@Override
protected void configure(HttpSecurity http) throws Exception {

    // @formatter:off
     http
     .authorizeRequests()
         .antMatchers("/", "/home","/login","/adduser","/verifyemail", 
                 "/baduser", "/resetmypassword","/resetpasswordlink").permitAll()
         .antMatchers("/tasks").hasAnyAuthority("APP_USER","APP_TENURED_USER","ADMIN")
         .antMatchers("/resetpasswordpage","/resetpassword").hasAuthority(TaskFirstConstants.RESET_PASSWORD_ACCESS)
         .antMatchers("/resetpasswordpage","/resetpassword").hasRole("")
         .anyRequest().authenticated()
         .and().rememberMe().key("uniqueAndSecret")     //  -- here
         .and()
     .formLogin()
         .loginProcessingUrl("/perform_login")
         .loginPage("/login")
         .defaultSuccessUrl("/tasks")
         .permitAll()
         .and()
     .logout()
         .permitAll()
         .logoutSuccessUrl("/login");

    // @formatter:on
}

@Bean
@Autowired
public DaoAuthenticationProvider authenticationProvider(PasswordEncoder passwordEncoder, UserDetailsService userDetailsService ){
    DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider();
    daoAuthenticationProvider.setPasswordEncoder(passwordEncoder);
    daoAuthenticationProvider.setUserDetailsService(userDetailsService);
    return daoAuthenticationProvider;       
}
Run Code Online (Sandbox Code Playgroud)

完整的错误日志在下面..

java.lang.IllegalStateException: UserDetailsService is required.
    at org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter$UserDetailsServiceDelegator.loadUserByUsername(WebSe
curityConfigurerAdapter.java:455) ~[spring-security-config-4.2.3.RELEASE.jar:4.2.3.RELEASE]
    at org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices.processAutoLoginCookie(TokenBasedRememberMeServices.java:1
23) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]
    at org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices.autoLogin(AbstractRememberMeServices.java:130) ~[spring-secu
rity-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]
    at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:98) …
Run Code Online (Sandbox Code Playgroud)

java spring-security remember-me spring-boot

8
推荐指数
1
解决办法
2343
查看次数

使用 java &amp; JSON 生成一组空的 Json 大括号

如何使用 jackson-java 生成一个空的 json 节点。我尝试使用 NullNode.instance,但返回

"totals":null
Run Code Online (Sandbox Code Playgroud)

而我希望总计是一个空实例。

{
  "totals": {},
  "orderId": "550047004",
  "numberOfItems": 2
}
Run Code Online (Sandbox Code Playgroud)

java json jackson jackson2

6
推荐指数
1
解决办法
4958
查看次数