小编cos*_*mos的帖子

用模式替换if else语句

我有一个if else声明可能会在不久的将来增长.

    public void decide(String someCondition){

        if(someCondition.equals("conditionOne")){
            //
            someMethod("someParameter");

        }else if(someCondition.equals("conditionTwo")){

           //
           someMethod("anotherParameter");

        }
        .
        .
        else{

            someMethod("elseParameter");

        }
}
Run Code Online (Sandbox Code Playgroud)

因为,这已经看起来很混乱,我认为如果我可以在这里应用任何设计模式会更好.我查看了策略模式,但我不确定这是否会减少if else条件.有什么建议?

java oop design-patterns

38
推荐指数
3
解决办法
5万
查看次数

Spring Boot:Oauth2:访问被拒绝(用户是匿名的); 重定向到身份验证入口点

我正在尝试使用spring boot oauth2来完成无状态身份验证和授权.但是,我正在努力工作.

这是我的代码:

@EnableAutoConfiguration
@ComponentScan
//@EnableEurekaClient
//@EnableZuulProxy
@Configuration
public class AuthServiceApp {

  public static void main(String[] args) {
    SpringApplication.run(AuthServiceApp.class, args);
  }
}
Run Code Online (Sandbox Code Playgroud)

授权配置:

@Configuration
@EnableAuthorizationServer
public class Oauth2ServerConfig extends AuthorizationServerConfigurerAdapter {

  @Autowired
  @Qualifier("authenticationManagerBean")
  private AuthenticationManager auth;

  @Autowired
  private DataSource dataSource;

  @Autowired
  private CustomUserDetailsService userDetailService;

  @Autowired
  private ClientDetailsService clientDetailsService;


  @Bean
  public JdbcTokenStore tokenStore() {
    return new JdbcTokenStore(dataSource);
  }

  @Bean
  protected AuthorizationCodeServices authorizationCodeServices() {
    return new JdbcAuthorizationCodeServices(dataSource);
  }

  @Override
  public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
    security.tokenKeyAccess("permitAll()").checkTokenAccess("isAuthenticated()");
  }

  @Override
  public void …
Run Code Online (Sandbox Code Playgroud)

spring spring-boot spring-security-oauth2 spring-oauth2

9
推荐指数
2
解决办法
1万
查看次数

Spring post方法“缺少所需的请求正文”

@PostMapping(path="/login")
public ResponseEntity<User> loginUser(@RequestBody Map<String, String> userData) throws Exception {
    return ResponseEntity.ok(userService.login(userData));
}
Run Code Online (Sandbox Code Playgroud)

我在 UserController 中有这个登录方法。问题是当我尝试为登录发出 post 请求时,我收到此错误:

{
"timestamp": "2018-10-24T16:47:04.691+0000",
"status": 400,
"error": "Bad Request",
"message": "Required request body is missing: public org.springframework.http.ResponseEntity<org.scd.model.User> org.scd.controller.UserController.loginUser(java.util.Map<java.lang.String, java.lang.String>) throws java.lang.Exception",
"path": "/users/login"
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

rest post spring spring-boot

7
推荐指数
3
解决办法
6万
查看次数

动态创建多个Ribbon客户端

我有一个 Spring 微服务架构应用程序,但我们没有使用 eureka 或任何其他服务发现。我的要求是创建一个动态负载均衡器。因此,对于每项服务,都会有一组独特且动态的服务器。配置将类似于:

ribbon:
  listOfServices: say-hello-service, say-hi-service
Run Code Online (Sandbox Code Playgroud)

我不想做的是,@RibbonClient为我将使用的每个服务客户端重复注释。我发现这RibbonClientSpecification是Ribbon工厂的关键部件。如果我使用名称say-hello-service.RibbonClientSpecification和注册它say-hi-service.RibbonClientSpecification,即使我没有@RibbonClient任何与功能区相关的配置,它也会尝试调用相应的服务。所以我的问题是

  1. @RibbonClient既然我们可以从定义的属性中识别服务,为什么需要注释呢?在我看来,我们必须在属性文件中定义功能区属性以及具有相同名称的注释是多余的。
  2. 如何为动态创建的每个功能区客户端注册负载均衡器?
  3. 在没有多个配置类的情况下动态创建多个功能区客户端的权利是什么@RibbonClient

java spring spring-cloud spring-cloud-netflix

5
推荐指数
1
解决办法
1468
查看次数