我有一个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条件.有什么建议?
我正在尝试使用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) @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)
我有一个 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任何与功能区相关的配置,它也会尝试调用相应的服务。所以我的问题是
@RibbonClient既然我们可以从定义的属性中识别服务,为什么需要注释呢?在我看来,我们必须在属性文件中定义功能区属性以及具有相同名称的注释是多余的。@RibbonClient?