2011-11-25 5 views
0

내 서비스 콩 예를 만들 것, 봄에 콩을 범위싱글은 어떻게 그것을 비 스레드 안전

@Service("officeService") 
@Transactional 
public class OfficeService { 

    @Resource(name = "sessionFactory") 
    private SessionFactory sessionFactory; 

    @Transactional(readOnly=true) 
    public List<Office> getAllOffices(){ 
     Session session = sessionFactory.getCurrentSession(); 
     Criteria crit = session.createCriteria(Office.class); 
     crit.addOrder(Order.desc("name")); 
     return crit.list(); 
    } 
} 

무엇을 그것은 스레드 안전하지 않은 경우처럼 (또는 아직없는) 것?

내 모든 컨트롤러와 서비스가 싱글 톤이라면 필요한 경우 각 요청이 싱글 톤에 대해 단순히 작용한다는 것을 의미합니까?

답변

3

클래스 내에서 인스턴스 변수로 상태를 관리하는 경우 스레드로부터 안전하지 않습니다. getCurrentSession() 메서드가 스레드 안전 (세션 유지)이되어있는 한 sessionFactory 만 있으므로 상태 메서드는

입니다.