반응형
GenericApplicationContext
GenericApplicationContext = applicationContext = new GenericApplicationContext();
applicationContext.registerBean(HelloController.class);
applicationContext.refresh();
아래와 같이 Bean을 등록하고
servlet에서
applicationContext.getBean(HelloController.class);
String ret = helloController.hello(name);
아래와 같이 사용해 주면 된다.
DI
HelloController -> SimpleHelloService
한 클래스가 다른 클래스의 기능을 사용하게 되면 그것을 의존한다고 말할 수 있다.
인터페이스를 두고 다른 하나를 선택하려고 할 때:
원래 추상화 되어있어서 정해지지 않은 관계에서
오브젝트를 가져다가 쓰게 해주는 어셈블러라고한다. -> 스프링에서는 스프링 컨테이너가 어셈블러이다.
Spring Container:
빈이 작성되어있으면 해당 빈이 필요할 때 그에 맞는 빈으로 등록되어있는 적합한 것을 스프링 컨테이너가 의존성 주입을 해준다.
스프링이 처음 만들어졌을 때 부터 사용하던 디스패처 서블릿이있다.
OnRefresh
GenericWebApplicationContext = applicationContext = new GenericWebApplicationContext();
addServlet("dispatcherServlet",new DispatcherServlet(applicationContext)).addMapping("/$");
하지만 아래와 같이 선언하면 동작하지 않는다.
@RequestMapping
@GetMapping("/hello")
@ResponseBody -> @Controller dlfEo
위와 같이 메핑을 해줘야 동작하기 때문이다.
@Configuration
@ComponentScan
@Bean
public HelloController helloController(HelloService helloService){
retrun new HelloController(helloService);
}
@Bean
public HelloService helloService(){
return new SimpleHelloService();
}
AnnotationConfigWebApplicationContext;
아래와 같이 빈으로 등록해 두면, 스프링이 동작할 때 한번 스캔을 하여 관리하게 된다.
meta annotation
어너테이션 위에 어너테이션을 추가하여 사용하는 방식으로
ex) @Controller와 @RestController를 보면 @RestController 안에 @Controller를 포함하고 더 많은 것을 추가하여 사용하고 있는 것을 볼 수 있다.
@Retention -> when stay
@Target -> where
-> 어너테이션 기본
반응형
'Spring' 카테고리의 다른 글
태태개발일지 - 어노테이션 (2) | 2024.12.09 |
---|---|
태태개발일지 - Componet (1) | 2024.12.06 |
태태개발일지 - Spring(토비님) (2) | 2024.12.01 |
태태개발일지 - Spring 시작 (토비님) 기본 복귀하기 (1) | 2024.11.26 |
태태개발일지 - 스프링부트 이해와 원리(토비님) (1) | 2024.11.25 |