Spring

태태개발일지 - Spring(토비님)

태태코 2024. 12. 5. 10:35
반응형

 

 

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 

-> 어너테이션 기본

 

 

 

 

 

반응형