Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringMVC控制器不工作的SpringAOP_Java_Spring_Spring Mvc_Spring Aop - Fatal编程技术网

Java SpringMVC控制器不工作的SpringAOP

Java SpringMVC控制器不工作的SpringAOP,java,spring,spring-mvc,spring-aop,Java,Spring,Spring Mvc,Spring Aop,您好,我正在使用以下基于注释的配置来连接我的方面,它在spring控制器上查看日志记录和其他横切方法调用 @Configuration @EnableWebMvc @EnableAspectJAutoProxy @ComponentScan({"com.pumpkinsafari.api"}) public class WebConfig extends WebMvcConfigurerAdapter { /** The Constant DD_MM_YYYY. */

您好,我正在使用以下基于注释的配置来连接我的方面,它在spring控制器上查看日志记录和其他横切方法调用

    @Configuration
@EnableWebMvc
@EnableAspectJAutoProxy
@ComponentScan({"com.pumpkinsafari.api"})
public class WebConfig extends WebMvcConfigurerAdapter {

    /** The Constant DD_MM_YYYY. */
    private static final String DD_MM_YYYY = "yyyy-MM-dd";

    /** The Constant DATE_FORMAT. */
    private static final DateFormat DATE_FORMAT = new SimpleDateFormat(DD_MM_YYYY);

    /**
     * Instantiates a new web config.
     */
    public WebConfig() {
        super();
    }

    @Bean
    public RestControllerAspect controllerAspect(){
        return new RestControllerAspect();
    }

    // beans

    /**
     * Xstream marshaller.
     * 
     * @return the x stream marshaller
     */
    public XStreamMarshaller xstreamMarshaller() {
        final XStreamMarshaller xStreamMarshaller = new XStreamMarshaller();
        xStreamMarshaller.setAutodetectAnnotations(true);
        xStreamMarshaller.setAnnotatedClasses(new Class[] { Principal.class, Customer.class, Role.class,
                Privilege.class, SocialUser.class, SearchRequest.class });
        xStreamMarshaller.getXStream().addDefaultImplementation(java.sql.Timestamp.class, java.util.Date.class);

        return xStreamMarshaller;
    }

    /**
     * Marshalling http message converter.
     * 
     * @return the marshalling http message converter
     */
    public MarshallingHttpMessageConverter marshallingHttpMessageConverter() {
        final MarshallingHttpMessageConverter marshallingHttpMessageConverter = new MarshallingHttpMessageConverter();
        final XStreamMarshaller xstreamMarshaller = xstreamMarshaller();
        marshallingHttpMessageConverter.setMarshaller(xstreamMarshaller);
        marshallingHttpMessageConverter.setUnmarshaller(xstreamMarshaller);

        return marshallingHttpMessageConverter;
    }

    // template

    /*
     * (non-Javadoc)
     * 
     * @see
     * org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
     * #configureMessageConverters(java.util.List)
     */
    @Override
    public void configureMessageConverters(final List<HttpMessageConverter<?>> messageConverters) {
        messageConverters.add(marshallingHttpMessageConverter());

        final ClassLoader classLoader = getClass().getClassLoader();
        if (ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", classLoader)) {
            MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
            jackson2HttpMessageConverter.getObjectMapper().disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
            // Register date format for marshalling unmarshalling dates
            jackson2HttpMessageConverter.getObjectMapper().setDateFormat(DATE_FORMAT);
            messageConverters.add(jackson2HttpMessageConverter);
        } else if (ClassUtils.isPresent("org.codehaus.jackson.map.ObjectMapper", classLoader)) {
            MappingJacksonHttpMessageConverter jacksonHttpMessageConverter = new MappingJacksonHttpMessageConverter();
            jacksonHttpMessageConverter.getObjectMapper().disable(
                    DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES);
            // Register date format for marshalling unmarshalling dates
            jacksonHttpMessageConverter.getObjectMapper().setDateFormat(DATE_FORMAT);
            messageConverters.add(jacksonHttpMessageConverter);
        }

        super.configureMessageConverters(messageConverters);
    }

}

请帮助别人

更改您的
@Pointcut
定义。对于类型而不是(@..使用(..中的
),对于方法而不是(@..
中的
使用
@注释(..

有关更多信息,请参阅关于切入点

@Aspect
public class RestControllerAspect {

    @Pointcut("within(@org.springframework.stereotype.Controller *)")
    public void controller() {
    }

    @Pointcut("execution(* *(..))")
    public void methodPointcut() {
        System.out.println("Invoked: ");
    }

    @Pointcut("within(@org.springframework.web.bind.annotation.RequestMapping *)")
    public void requestMapping() {
        System.out.println("Invoked: ");
    }

    @Before("controller() && methodPointcut() && requestMapping()")
    public void aroundControllerMethod(JoinPoint joinPoint) throws Throwable {
        System.out.println("Invoked: " + niceName(joinPoint));
    }

    @AfterReturning("controller() && methodPointcut() && requestMapping()")
    public void afterControllerMethod(JoinPoint joinPoint) {
        System.out.println("Finished: " + niceName(joinPoint));
    }

    private String niceName(JoinPoint joinPoint) {
        return joinPoint.getTarget().getClass() + "#" + joinPoint.getSignature().getName() + "\n\targs:"
                + Arrays.toString(joinPoint.getArgs());
    }

}