오늘 사수님께 공유받은 이직과 관련된 포스팅을 보고 급 반성을 하게 되었다.

아직 신입 꼬리표도 못뗀 주제에 너무 안일하게 시간을 보낸 것 같다는 생각이 들며,

그동안의 나를 되돌아보며 스스로를 질책했다. 

 

우선, 자바 기본책을 다시 정독하기 위해 자바의 정석 3rd edition을 새로 구입하여 두세번 읽어보기로 다짐. 

기본도 정확히 모르는 주제에 무슨 개발을 하겠다고 설쳐댄건지.

 

내가 정확하게 다 알 수 있다고 자신있게 말하려면

최소한 기본책에 나온 어떤 내용에 대한 질문에도 짧고 간결하게 답할 수 있는 정도. (구구절절? -> NO)

그 정도가 되었다는 자신이 생겼다면 지금 사두고 잘 읽지 못하고 있는 '모던 자바 인 액션'을 읽기로 하겠다. 

 

 

Anyway,

지금 어쨌든 회사에서 당장 개발해야 될 것들이 있기 때문에 책이 오기 전까지 Spring이 무엇인지, 그리고 동작원리는 어떻게 되는지 짧게라도 짚고 개발을 해야 죄책감이 아주 조금이라도 덜 것 같기에 내용이 잘 정리된 포스팅을 찾고, 그 내용을 기반으로 내 방식대로 다시 정리해보았다. 아래 나온 모든 내용은 맨 하단에 나온 출처로 부터 나온 내용!

 

 

 

  • 스프링이란?
    • IoC와 AOP를 지원하는 경량의 컨테이너
  • 컨테이너란?
    • 객체의 생성, 관리를 담당하고, 객체를 운용하는 데 필요한 기능을 제공한다. 
  • 스프링에서 컨테이너 역할을 하는 것은 ?
    • BeanFactory
    • ApplicationContext (BeanFactory 상속)
  • 두 컨테이너의 차이점은?
    • BeanFactory 
      • applicationContext.xml (스프링 설정 파일) 에 등록된 bean 객체를 생성 및 관리
      • 클라이언트로부터 요청이 들어올 때만 객체를 생성한다. 
    • ApplicationContext
      • BeanFactory의 객체 생성 및 관리 + 트랜잭션 관리 / 메시지 기반의 다국어처리 지원 
      • 컨테이너가 구동되는 시점에 bean에 등록된 클래스를 객체화 한다. 
      • GenericXmlApplicationContext -> ApplicationContext를 구현한 대표 클래스
  • 스프링의 특징
    • POJO (Plain old java object)
      • 예전에는 자바로 웹애플리케이션을 개발하려면 Servlet클래스를 상속받아 구현해야 했는데 이 Servlet이 POJO가 아니었다. 그런데 스프링을 사용하면 POJO만으로 웹 애플리케이션을 구축할 수 있게 되었다. Servlet클래스를 모두 추상화하여 라이브러리로 들어갔기 때문에. XML이나 다른 설정으로 Servlet을 이요하면 된다.  
    • IoC (Inversion of Control)
      • 객체 생성을 자바 코드로 직접 처리하는 것이 아니라, 컨테이너가 대신 처리한다. 
        • 제어권이 사용자가 아니라 프레임워크에 있다.
      • 객체와 객체 사이의 의존 관계 또한 컨테이너가 대신 처리한다. 
    • DI (Dependency Injection)
      • 의존성
        • A 객체에서 B 객체의 변수나 메소드를 사용해야 할 경우,  A라는 객체 생성자에서 new B();를 해야한다. 이 때 A는 B에 의존한다고 볼 수 있다. 
      • 의존성 주입
        • A라는 객체에서 B를 생성하는 것이 아니라 외부에서 생성된 B를 A에 주입함으로써 의존 관계를 없앤다.
      • 의존성 주입 방법
        • XML 방법
          • 생성자<constructor-arg> 태그 + ref 속성
          • 속성 <property> + name 속성  
        • Annotation 방법
          • @Autowired / @Resource 
    • AOP (Aspect of Programming)
      • 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우, 핵심로직에서 분리하여 관리한다. 
      • AOP 방법
        • XML 방법
        • AOP 방법 
          • @Aspect / @Before
    • 스프링 동작 원리 (출처에 표시된 URL에 가시면 자세한 설명 보실 수 있습니다!!!)

웹어플리케이션 실행 -> WAS가 web.xml 실행 -> ApplicationContext를 생성하는 ContextLoaderListener가 web.xml에 등록된 내용에 따라 생성 -> root-context.xml에 등록된 Spring Container가 구동되며 필요한 객체들 생성 -> client요청 들어옴 -> DipatcherServlet 생성 -> 알맞은 Page Controller에게 전달하고 응답을 어떻게 할지 결정 -> Dispatcher Servlet은 servlet-context.xml을 loading -> 두번째 Spring Container가 구동될 때 첫번째 Container가 구동되며 생성된 DAO, VO, ServiceImple클래스들과 협업하여 작업 처리 

https://asfirstalways.tistory.com/334

 

Spring 의 시작, 프레임워크의 구성요소와 동작원리

Spring Framework의 구성요소와 동작원리 POJO 스프링의 특징을 살펴보면 POJO라는 단어가 등장한다. POJO란 Plain Old Java Object로 직역하자면 평범한 옛날 자바 객체이다. 말 그대로 자바 객체인 것이다. 이..

asfirstalways.tistory.com

 

 

+ Recent posts