小编Mar*_*ski的帖子

Spring 4.2.3和rapidxml Jackson 2.7.0是不兼容的

从fasterxml.jackson 2.6.3迁移到2.7.0之后.这是因为public JavaType constructType(Type type, Class<?> contextType)Spring中使用的方法AbstractJackson2HttpMessageConverter被删除了.如何解决这个问题?我使用的是Spring 4.2.3.

/signin/facebook
java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.type.TypeFactory.constructType(Ljava/lang/reflect/Type;Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/JavaType;
    at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.getJavaType(AbstractJackson2HttpMessageConverter.java:314)
    at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.canRead(AbstractJackson2HttpMessageConverter.java:146)
    at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.canRead(AbstractJackson2HttpMessageConverter.java:141)
    at org.springframework.web.client.RestTemplate$AcceptHeaderRequestCallback.doWithRequest(RestTemplate.java:706)
    at org.springframework.web.client.RestTemplate$HttpEntityRequestCallback.doWithRequest(RestTemplate.java:770)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:594)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:557)
    at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:357)
    at org.springframework.social.oauth2.OAuth2Template.postForAccessGrant(OAuth2Template.java:242)
    at org.springframework.social.oauth2.OAuth2Template.exchangeForAccess(OAuth2Template.java:144)
    at org.springframework.social.connect.web.ConnectSupport.completeConnection(ConnectSupport.java:160)
    at org.springframework.social.connect.web.ProviderSignInController.oauth2Callback(ProviderSignInController.java:228)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:44)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
Run Code Online (Sandbox Code Playgroud)

spring jackson fasterxml

31
推荐指数
1
解决办法
3万
查看次数

警告@Configuration类上的非静态ConfigurationClassPostProcessor声明

我使用Spring 4.2.6.RELEASE.在我的应用程序初始化期间,我收到这样的警告:

[WARN] org.springframework.context.annotation.ConfigurationClassPostProcessor enhanceConfigurationClasses:无法增强@Configuration bean定义'org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerEndpointsConfiguration $ TokenKeyEndpointRegistrar',因为它的单例实例创建得太早.典型的原因是具有BeanDefinitionRegistryPostProcessor返回类型的非静态@Bean方法:请考虑将此类方法声明为"static".

我找到了一个类似问题的jira:

https://jira.spring.io/browse/SPR-14234

但它被标记为已关闭,应在4.2.6.RELEASE中修复.

spring spring-mvc

13
推荐指数
1
解决办法
4165
查看次数

#oauth2方法级别的安全表达式

如何在方法级别上使用#oauth2安全表达式,如下例所示,我该怎么办?

@RequestMapping(value = "email", method = RequestMethod.GET)
  @ResponseBody
  @PreAuthorize("#oauth2.hasScope('read')")
  public String email() {

    return "test@email.com";
  }
Run Code Online (Sandbox Code Playgroud)

如果我对我收到的资源提出请求

    [INFO] java.lang.IllegalArgumentException: Failed to evaluate expression '#oauth2.hasScope('read')'
[INFO]  at org.springframework.security.access.expression.ExpressionUtils.evaluateAsBoolean(ExpressionUtils.java:14)
[INFO]  at org.springframework.security.access.expression.method.ExpressionBasedPreInvocationAdvice.before(ExpressionBasedPreInvocationAdvice.java:44)
[INFO]  at org.springframework.security.access.prepost.PreInvocationAuthorizationAdviceVoter.vote(PreInvocationAuthorizationAdviceVoter.java:57)
[INFO]  at org.springframework.security.access.prepost.PreInvocationAuthorizationAdviceVoter.vote(PreInvocationAuthorizationAdviceVoter.java:25)
[INFO]  at org.springframework.security.access.vote.AffirmativeBased.decide(AffirmativeBased.java:62)
[INFO]  at org.springframework.security.access.intercept.AbstractSecurityInterceptor.beforeInvocation(AbstractSecurityInterceptor.java:232)
[INFO]  at org.springframework.security.access.intercept.aspectj.AspectJMethodSecurityInterceptor.invoke(AspectJMethodSecurityInterceptor.java:43)
[INFO]  at org.springframework.security.access.intercept.aspectj.aspect.AnnotationSecurityAspect.ajc$around$org_springframework_security_access_intercept_aspectj_aspect_AnnotationSecurityAspect$1$c4d57a2b(AnnotationSecurityAspect.aj:63)
[INFO]  at pl.insert.controllers.ResourceController.email(ResourceController.java:22)
Run Code Online (Sandbox Code Playgroud)

如果我在ResourceServerConfiguration而不是@Controllers方法中指定访问权限,则同样适用

@Configuration
@EnableResourceServer
public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter {

  @Override
  public void configure(HttpSecurity http) throws Exception {
    http.requestMatchers().antMatchers("/oauth/resources/**");
    http.authorizeRequests().anyRequest().access("#oauth2.hasScope('read')");
  }
}
Run Code Online (Sandbox Code Playgroud)

标准安全表达式(如@PreAuthorize("permitAll")或@PreAuthorize("denyAll")按预期工作.所以,我可能不得不告诉我的AspectJMethodSecurityInterceptor使用OAuth2WebSecurityExpressionHandler.有任何想法吗?

java spring-mvc spring-security oauth-2.0

12
推荐指数
3
解决办法
9551
查看次数

@Validated时@Transactional不起作用

如果我@Validated向我的服务的接口/实现添加注释,那么该服务不再是事务性的.Stacktrace显示没有,TransactionInterceptor但我只看到MethodValidationInterceptor.如果我删除@Validated然后我看到TransactionInterceptorMethodValidationInterceptor消失当然.这些方面是否相互排斥?

@Service
//@Validated <- here is my problem :)
public interface AdminService {
  String test(String key, String result);
}

public class AdminServiceImpl implements AdminService, BeanNameAware, ApplicationContextAware {

  @Override
  @Transactional(transactionManager = "transactionManager")
  public String test(String key, String result) {

    return "hehe";
  }
}

@Configuration
@EnableAspectJAutoProxy(exposeProxy = true)
@EnableTransactionManagement(order = AspectPrecedence.TRANSACTION_MANAGEMENT_ORDER)
public class AppConfiguration {..}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在此输入图像描述

validation aop spring transactions spring-aspects

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

@Tansactional和@Aspect排序

我想在@Transactional事务开始之前执行我的代码。

@Aspect
@Order(Ordered.HIGHEST_PRECEDENCE)
//@Order(Ordered.LOWEST_PRECEDENCE)
public class SynchronizerAspect {

  @Pointcut("execution(public * xxx.xxx.services.*.*(..))")
  private void anyServiceOperation() {
  }

  @Around("anyServiceOperation()")
public Object synchronizerAdvice(ProceedingJoinPoint joinPoint) throws Throwable {
    System.out.println("Synchronizing : " + joinPoint.getSignature().getName());
return joinPoint.proceed();
  }
Run Code Online (Sandbox Code Playgroud)

当我调用标记为@Transactional的服务方法时,我总是在事务内部执行我的方面代码:

[INFO] INFO: FETCH created: Fri Oct 30 15:43:11 UTC 2015 duration: 0 connection: 40 statement: 999 resultset: 0
[INFO] pa?? 30, 2015 3:43:11 PM com.mysql.jdbc.log.Slf4JLogger logInfo
[INFO] INFO: QUERY created: Fri Oct 30 15:43:11 UTC 2015 duration: 1 connection: 40 statement: 14 resultset: 15 message: …
Run Code Online (Sandbox Code Playgroud)

spring aspectj transactional spring-aop aspectj-maven-plugin

3
推荐指数
1
解决办法
2020
查看次数