Автосвязанные зависимости возвращаются к нулю (каждая из них) - PullRequest
2 голосов
/ 09 сентября 2010

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

Я создал вставку из журналов загрузки. Нет кости с перемещением компонента сканирования. http://pastebin.com/ttC5MPnQ

1 Ответ

3 голосов
/ 09 сентября 2010
  • посмотрите, есть ли в журналах что-то подозрительное
  • мне кажется, что AuthFilter не является пружинным компонентом - либо сопоставьте его в конфиге xml, либо аннотируйте его @Component.
  • удалите default-autowire="byName", если у вас нет веских причин для его установки.
  • убедитесь, что вы используете этот фильтр из контекста, а не создаете его сами.
  • убедитесь, что вы не ссылаетесь на bean-компонент, определенный в родительском контексте (например, bean-компонент, определенный в applicationContext.xml, не может получить доступ к bean-компоненту, определенному в dispatcher-servlet.xml)
  • , поместите component-scan в applicationContext.xml (не сервлет).(Вы можете сохранить файл в сервлете xml, но ограничить его только веб-пакетами)
...