โ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์ ํ์ด๋, ๋คํธ์ํฌ ์์ผ์ฒ๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ ์ ํ์ํ ์ฐ๊ฒฐ์ ๋ฏธ๋ฆฌ ํด๋๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ข ๋ฃ ์์ ์ ์ฐ๊ฒฐ์ ๋ชจ๋ ์ข ๋ฃํ๋ ์์ ์ ์งํํ๋ ค๋ฉด, ๊ฐ์ฒด์ ์ด๊ธฐํ์ ์ข ๋ฃ ์์ ์ด ํ์ํ๋ค.
๊ฐ๋จํ๊ฒ ์ธ๋ถ ๋คํธ์ํฌ์ ๋ฏธ๋ฆฌ ์ฐ๊ฒฐํ๋ ๊ฐ์ฒด๋ฅผ ํ๋ ์์ฑํ๋ค๊ณ ๊ฐ์ ํด๋ณธ๋ค.
NetworkClient
๋ ์ ํ๋ฆฌ์ผ์ด์
์์ ์์ ์ connect()
๋ฅผ ํธ์ถํด์ ์ฐ๊ฒฐ์ ๋งบ์ด๋์ด์ผ ํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์
์ด ์ข
๋ฃ๋๋ฉด disConnect()
๋ฅผ ํธ์ถํด์ ์ฐ๊ฒฐ์ ๋์ด์ผ ํ๋ค.์์ ์ฝ๋ : test/lifecycle/NetworkClient.java
public class NetworkClient {
private String url;
public NetworkClient() {
System.out.println("์์ฑ์ ํธ์ถ, url = " + url);
connect();
call("์ด๊ธฐํ ์ฐ๊ฒฐ ๋ฉ์์ง");
}
public void setUrl(String url) {
this.url = url;
}
// ์๋น์ค ์์์ ํธ์ถ
public void connect() {
System.out.println("connect: " + url);
}
public void call(String message) {
System.out.println("call: " + url + " message = " + message);
}
// ์๋น์ค ์ข
๋ฃ์ ํธ์ถ
public void disconnect() {
System.out.println("close: " + url);
}
}
test/lifecycle/BeanLifeCycleTest.java
import org.junit.jupiter.api.Test;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
public class BeanLifeCycleTest {
@Test
public void lifeCycleTest() {
ConfigurableApplicationContext ac = new AnnotationConfigApplicationContext(LifeCycleConfig.class);
NetworkClient client = ac.getBean(NetworkClient.class);
ac.close();
}
@Configuration
static class LifeCycleConfig {
@Bean
public NetworkClient networkClient() {
NetworkClient networkClient = new NetworkClient();
networkClient.setUrl("<http://hello-spring.dev>");
return networkClient;
}
}
}
url
์ ๋ณด ์์ด connect
๊ฐ ํธ์ถ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.