๋ชฉ์ฐจ
@Configuration
์ด ์ด๋ ธํ ์ด์ ์ ํด๋์ค์ ๋ถ์ด๋ฉด ํด๋น ํด๋์ค๋ฅผ ์คํ๋ง ์ค์ ํด๋์ค๋ก ๋ฑ๋กํ๋ค.
@Bean ๋น
์คํ๋ง์ด ์์ฑํ๋ ๊ฐ์ฒด๋ฅผ ๋น์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
@Bean์ ๋ฉ์๋์ ๋ถ์ด๋ฉด ํด๋น ๋ฉ์๋๊ฐ ์์ฑํ ๊ฐ์ฒด๋ฅผ ์คํ๋ง์ด ๊ด๋ฆฌํ๋ ๋น ๊ฐ์ฒด๋ก ๋ฑ๋กํ๋ค.
@Configuration //AppContext.java๋ฅผ ์คํ๋ง ์ค์ ํด๋์ค๋ก ๋ฑ๋กํ๋ค
public class AppContext {
@Bean
public Greeter greeter(){
Greeter greeter = new Greeter();
greeter.setFormat("%s, ์๋
ํ์ธ์.");
return greeter;
}
}
Greeterํ์ ์ด๊ณ , "greeter" ๋ผ๋ ์ด๋ฆ์ Bean์ด ์คํ๋ง ์ปจํ ์ด๋์ ๋ฑ๋ก๋๋ค.
ApplicationContext = Spring Container
ApplicationContext ctx = new AnnotationConfigApplicationContext(AppContext.class);
//์ด๋
ธํ
์ด์
๊ธฐ๋ฐ์ ์ค์ ์ ๋ณด๋ฅผ ์ฝ์ด์ค๊ธฐ
ApplicationContext ctx = new GenericXmlApplicationContext(AppContext.xml);
//XML๊ธฐ๋ฐ์ ์ค์ ์ ๋ณด๋ฅผ ์ฝ์ด์ค๊ธฐ
์ด๋ ธํ ์ด์ , XML๊ธฐ๋ฐ์ ์ค์ ์ ๋ณด๋ฅผ ์ฝ์ด์์ ๋น ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ Context๋ฅผ ๊ฐ์ ธ์จ๋ค.
์ด๋ ธํ ์ด์ ๊ธฐ๋ฐ์ ๋ฐํ์ผ๋ก ์ค๋ช ํ๋ฉด, AppContext์ ์ ์ํ @Bean์ ์ฝ์ด์ "greeter"๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์ด๊ธฐํํ๋ค.
ApplicationContext๋ Bean๊ฐ์ฒด์ ์์ฑ, ์ด๊ธฐํ, ๋ณด๊ด, ์ ๊ฑฐ ๋ฑ์ ์ญํ ์ ๋งก๊ณ ์๋ค.
=> ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ Container๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Main {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppContext.class);
Greeter greeter1 = ctx.getBean("greeter", Greeter.class);
//์คํ๋ง ์ปจํ
์ด๋์์ Gretter.classํ์
์ด๊ณ , ์ด๋ฆ์ด greeter ๋น์ ๊ฐ์ ธ์จ๋ค
Greeter greeter2 = ctx.getBean("greeter", Greeter.class);
Greeter greeter3 = new Greeter();
Greeter greeter4 = new Greeter();
System.out.println(greeter1 == greeter2); //true
System.out.println(greeter1 == greeter3); //false
System.out.println(greeter3 == greeter4); //false
ctx.close();
}
}
greeter1๊ณผ greeter2๋ ๊ฐ์ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์๋ค. = ๊ฐ์ ๊ฐ์ฒด์ด๋ค.
greeter3์ greeter4๋ ๋ค๋ฅธ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์๋ค. = ๋ค๋ฅธ ๊ฐ์ฒด์ด๋ค.
์คํ๋ง์ ์ปจํ ์ด๋์ ๋ฑ๋ก๋ Bean์ ๊ธฐ๋ณธ์ ์ผ๋ก 1๊ฐ๋ง ์์ฑํด์ค๋ค. (์ฑ๊ธํค)
BeanFactory
๋น ์์ฑ๊ณผ ๊ฒ์์ ๋ํ ๊ธฐ๋ฅ์ ์ ์ํ๊ณ ์๋ค.
ApplicationContext
BeanFactory๋ฅผ ์์๋ฐ์์ ๋ ํธ๋ฆฌํ๊ฒ ๋น์ ๊ด๋ฆฌํ ์ ์๋๋ก ๋์์ค๋ค.
+ ๋ฉ์์ง, ํ๊ฒฝ๋ณ์ ๋ฑ์ ์ฒ๋ฆฌํ๋ ํธ๋ฆฌ๊ธฐ๋ฅ์ ์ ๊ณตํด์ค๋ค.