2

Spring 似乎在启动时可以很好地解决并创建自动装配的对象。但是当我尝试访问它们时,它们会返回为空。有人对可能发生的事情有任何猜测吗?

XML信息也是空白的,因为我只允许一个超链接......

<beans  xmlns="" 
 xmlns:xsi=""
 xmlns:p="" 
 xmlns:mvc=""    
 xmlns:context=""
 xsi:schemaLocation="...only allowed one hyperlink" default-autowire="byName">

 <mvc:annotation-driven />

<context:component-scan base-package="com.blah.controller"/>
<context:component-scan base-package="com.blah.*.service"/>
<context:component-scan base-package="com.blah.*.dao"/>

<context:annotation-config />

public class AuthFilter extends UsernamePasswordAuthenticationFilter {

@Autowired
private ProfileService profileService;
    //.... Do more stuff below that shows profileService coming back as null.

}

我能够使用调试器来显示对象正在被初始化。如果你们愿意,我可以将我的日志粘贴到这里,但这需要大量支持编辑:)。

在定义 authfilter 的地方添加一点:

 <b:bean id="authenticationFilter" class="com.blah.auth.AuthFilter">
    <b:property name="authenticationManager" ref="authenticationManager" />
    <b:property name="filterProcessesUrl" value="/login/validate" />
    <b:property name="usernameParameter" value="username" />
    <b:property name="passwordParameter" value="password" />
    <b:property name="authenticationSuccessHandler" ref="authSuccessHandler" />
    <b:property name="authenticationFailureHandler" ref="authFailureHandler" />
</b:bean>

组件扫描在 springapp-servlet.xml 中

我已经创建了引导日志的 pastebin。移动组件扫描没有骰子。http://pastebin.com/ttC5MPnQ

4

1 回答 1

3
  • 查看日志中是否有可疑内容
  • 在我看来,这AuthFilter不是一个 spring bean - 要么将它映射到 xml 配置中,要么用@Component.
  • default-autowire="byName"如果您没有令人信服的理由来设置它,请删除。
  • 确保您在上下文中使用该过滤器,而不是自己实例化它。
  • 确保您没有引用父上下文中定义的 bean(例如 - 中定义的 beanapplicationContext.xml无法访问中定义的 bean dispatcher-servlet.xml
  • 将 acomponent-scan放在applicationContext.xml(而不是 servlet 中)。(您可以在 servlet xml 中保留一个,但仅限于 web 包)
于 2010-09-09T05:06:24.227 回答