복붙노트

[SPRING] 개찰구 @SpringBean은 빈을 만들 수 없습니다.

SPRING

개찰구 @SpringBean은 빈을 만들 수 없습니다.

나는 Eclipse, Wicket, Spring, Hibernate에 관한 프로젝트를 가지고있다. 모든 것은 normaly를 제외하고 작동합니다.

public class SortableContactDataProvider extends SortableDataProvider<User>
{
    @SpringBean
    private Service service;

    public Iterator<User> iterator(int first, int count)
    {
        //SortParam sp = getSort();
        return service.findAllUsers().subList(0, 15).iterator();
    }
...

서비스 변수가 null입니까? 다른 곳에서 내가이 건축물을 사용할 때 "서비스"는 null이 아니며 잘 작동합니다. 이 문제를 해결하도록 도와주세요.

해결법

  1. ==============================

    1.@SpringBean은 Component의 모든 서브 클래스에서만 작동합니다.

    @SpringBean은 Component의 모든 서브 클래스에서만 작동합니다.

    생성자에서 다음을 수행해야합니다.

    개찰구 1.4

      InjectorHolder.getInjector().inject(this);
    

    개찰구 1.5 이상

      org.apache.wicket.injection.Injector.get().inject(this);
    

    '일반 IDataProvider 구현'@ http://stronglytypedblog.blogspot.com/2009/03/wicket-patterns-and-pitfalls-1.html을 참조하십시오.

    즐겨

  2. ==============================

    2.bick이 지적했듯이 @SpringBean은 Component의 모든 하위 클래스에서만 작동하므로 수동으로 주입을해야합니다. 이것은 2 단계 프로세스입니다.

    bick이 지적했듯이 @SpringBean은 Component의 모든 하위 클래스에서만 작동하므로 수동으로 주입을해야합니다. 이것은 2 단계 프로세스입니다.

    다음과 같이 수업에서 주입을 유도하십시오.

    public class SortableContactDataProvider extends SortableDataProvider<User>
    {
        @SpringBean
        private Service service;
    
        public SortableContactDataProvider(){
            Injector.get().inject(this); // set up the injection
        }
    
        public Iterator<User> iterator(int first, int count)
        {
            return service.findAllUsers().subList(0, 15).iterator();
        }
    }
    

    그리고 Injector가 Wicket 어플리케이션에 설치되었는지 확인하십시오.

    public WicketApplication 
    
        @Override
        protected void init() {
            // make sure Spring injector is available and set up
            getComponentInstantiationListeners().add(new SpringComponentInjector(this));
        }
    }
    
  3. from https://stackoverflow.com/questions/3210496/wicket-springbean-can-not-create-bean by cc-by-sa and MIT license