java - Spring AOP注入(inject)PortletRequest

标签 java spring aop portlet aspects

我试图在我的方面类中注入(inject)一个 portletrequest

@Autowired(required = true)
private PortletRequest request;

@Before("execution(* de.ac.mis.dao.*.getSessionFactory())")
public void setUsername() {
    System.out.println("Now I'm setting the username " + this.request);
}

只给我一个

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: 
No matching bean of type [javax.portlet.PortletRequest] found for dependency: 
expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

异常

但我可以 Autowiring HttpServletRequest - 我是否遗漏了什么?

最佳答案

好的,经过一些实验解决了它,也许它对其他人有用

@Before("execution(* de.ac.mis.dao.acDynamicUserSessionFactory.getSessionFactory())")
public void setUsername(JoinPoint joinPoint) {
    acDynamicUserSessionFactory dao = (acDynamicUserSessionFactory) joinPoint.getTarget();
    RequestAttributes requestAttributes = RequestContextHolder.currentRequestAttributes();
    String userName = "";
    if (requestAttributes instanceof PortletRequestAttributes) {
        PortletRequest request = ((PortletRequestAttributes) requestAttributes).getRequest();
        userName = request.getRemoteUser();
    } else if (requestAttributes instanceof ServletRequestAttributes) {
        HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
        userName = request.getRemoteUser();
    }
    dao.setUserName(userName);
    this.log.debug("acUserSessionfactory was set for user: " + userName);
}

对于这些配置来说,重要的是请求资源(portlet 或 servlet)必须在 spring 上下文中运行,否则此时没有可用的请求属性。

关于java - Spring AOP注入(inject)PortletRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3335439/

相关文章:

java - 两个应用程序运行在同一个 tomcat 上

java - 我怎样才能看到带有maven的jboss控制台

java - 从数组中删除重复字符

java - 严重 : Context initialization failed org. springframework.beans.factory.BeanCreationException:创建名称为 'sessionFactory' 的 bean 时出错

java - 无法覆盖或禁用 spring boot 实例化的 Filter,导致过滤器链中出现重复条目

aop - Autofac + CaSTLe 动态代理 : Order of interceptors

java - 为什么 org.aopalliance.intercept.Joinpoint#proceed 抛出 Throwable ?

java - 从线程启动新线程

java - Spring 默认配置文件属性

unity-container - 使用 Unity 拦截子方法调用