본문 바로가기
공부/프로그래밍

[Spring] 서비스 객체 초기화 init : @PostConstruct 사용

by demonic_ 2017. 10. 10.
반응형

2가지 방법이 있다.

1) 어노테이션 사용

2) xml 에 등록


여기서는 1번을 다루고자 한다



다음의 서비스 클래스가 있다.

@Service

public class test{

Map<String, Object> map; 


public void action(){

System.out.println(map.get("key"));

}

}


action을 바로 실행하면 객체가 생성되지 않았기 때문에 에러가 난다.

그래서 @PostConstruct 를 이용하면 된다.

@Service

public class test{

Map<String, Object> map; 


@PostConstruct

public void init(){

map = new HashMap<String, Object>();

map.put("key", "test");

}


public void action(){

System.out.println(map.get("key"));

}

}


그럼 Autowired 를 이용해 외부의 의존을 가져야할 때에는 어떻게 될까?

예를들어 아래와 같은 상황.


@Service

public class test{

Map<String, Object> map; 


@Autowired

private Test2Service test2Service;


@PostConstruct

public void init(){

map = new HashMap<String, Object>();

map.put("key", test2Service);

}


public void action(){

map.get("key");

}

}


된다.

autowired 가 먼저 생성된 후에 init 메서드가 실행된다.

반응형

댓글