2017-11-27 1 views
1

저는 두 서블릿과 두 서블릿에 대한 공통 데이터 소스를 가지고 있습니다. 첫 번째 서블릿은 mvc이고 두 번째 서블릿은 JAXWS입니다. 두 번째 서블릿은 @Autowired 필드에 대해 항상 null입니다. 널 (null)이 필드를 확인하기위한 나의 결정은 그렇다 :null @autowired 필드를 확인하고 수동으로 초기화하십시오.

public class InRequestServiceImpl implements InRequestService { 

    @Autowired 
    public InRequestDao inRequestDao;// = new InRequestDaoImpl(); 


    public InRequestServiceImpl() { 
     if (inRequestDao == null) inRequestDao = new InRequestDaoImpl(); 
    } 

    @Override 
    @Transactional 
    public void insertData(InRequest doc) throws IOException { 
     inRequestDao.insertData(doc); 
    } 
... 
} 

참조 질문 : SPRING: visibility of autowired beans in services

질문은 : 좋은 방법이 상황에 있는가? 깨끗한 코드를 작성하는 데 도움이됩니다.

+1

아니요. 일반적으로 autowired가 항상 있어야합니다. 어떻게 구성 했습니까? – Stultuske

+0

나는 아래와 같이 생성자 삽입을 선호한다. '@Autowired public InRequestServiceImpl (InRequestDao inRequestDao) { this.inRequestDao = inRequestDao; } @ –

+0

@ DavidPrezCabrera 아마도 autobired 필드가 null이기 때문에 같은 문제를 일으킬 것입니다. – Stultuske

답변

1

질문 :이 상황에 대한 우수 사례가 있습니까?

아니요,이 없습니다. 90 %의 경우에 autowired 필드가 초기화되지 않으면 대개 클래스가 종속성 주입 프레임 워크 (이 경우 봄)에 의해 관리되지 않음을 의미합니다. 스프링 구성을 검토하는 것이 좋습니다. 예 : @Service 주석을 사용하여 서비스 클래스에 주석을 추가 했습니까? here 외에도 도움이 될 수 있습니다.

관련 문제