Spring: 프로젝트 를 시작 할 때 데이터베이스 데 이 터 를 불 러 옵 니 다 (총괄)

5968 단어 spring
프로젝트 에서 프로그램 을 시작 해 야 할 때 데이터베이스 에 있 는 사용자 정보 표를 메모리 에 불 러 오고 몇 가지 방법 을 찾 아 보 세 요.
1. ApplicationListener 인 터 페 이 스 를 실현 하고 onApplicationEvent 방법 을 다시 쓰 면 프로젝트 가 시 작 될 때 이 방법 을 실행 할 수 있 습 니 다.
@Component("userInit")

public class UserInit implements ApplicationListener   {

    public static Map<String,User> map=new HashMap<String, User>();

    

    public static Map<String, User> getMap() {

        return map;

    }





    public static void setMap(Map<String, User> map) {

        UserInit.map = map;

    }



    private  HibernateTemplate hibernateTemplate;

    

    

    



    public HibernateTemplate getHibernateTemplate() {

        return hibernateTemplate;

    }

    

    @Resource

    public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {

        this.hibernateTemplate = hibernateTemplate;

    }





    







    @Override

    public void onApplicationEvent(ApplicationEvent arg0) {

        System.out.println("-------------------  ");

        List<User> list=hibernateTemplate.find("from User");

        for(User s:list){

            map.put(s.getUserName()+s.getPassword(), s);

        }

        System.out.println(map);

    }

}

이 방법 은 실현 이 간단 하지만 감청 규정 이 없 기 때문에 프로젝트 에서 여러 차례 실 행 될 수 있다.
스 터 드 이벤트 가 애플 리 케 이 션 이 벤트 를 계승 했다 면 이 종 류 를 대상 으로 감청 해 야 합 니 다. 
 public void onApplicationEvent(ApplicationEvent _event) {  

        if (!(_event instanceof StudentEvent)) {  

            return;  

        }  

...

}

2. InitialingBean 인 터 페 이 스 를 실현 하고 재 작성 방법 after PropertiesSet () 방법 으로 프로젝트 가 시 작 될 때 불 러 올 수 있 습 니 다.
@Component("userInit")

public class UserInit implements InitializingBean   {

    public static Map<String,User> map=new HashMap<String, User>();

    

    public static Map<String, User> getMap() {

        return map;

    }





    public static void setMap(Map<String, User> map) {

        UserInit.map = map;

    }



    private  HibernateTemplate hibernateTemplate;

    

    

    



    public HibernateTemplate getHibernateTemplate() {

        return hibernateTemplate;

    }

    

    @Resource

    public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {

        this.hibernateTemplate = hibernateTemplate;

    }





    @Override

    public void afterPropertiesSet() throws Exception {

        System.out.println("-------------------  ");

        List<User> list=hibernateTemplate.find("from User");

        for(User s:list){

            map.put(s.getUserName()+s.getPassword(), s);

        }

        System.out.println(map);

        

    }

}

이런 방식 은 한 번 만 불 러 오 는 것 이 비교적 편리 하 다.

좋은 웹페이지 즐겨찾기