웹 개발의 봄, Spring~
이번 주는 주특기 입문 과정의 첫 주이다. 이번 주는 특히나 더 힘들었던 것 같다. 강의 내용이 이해가 잘 되지 않아 이해하는 데 많은 시간이 걸렸고, 과제도 빠듯했다. 용어가 낯설고 유기적인 관계를 이해하는 것이 많이 힘들었던 것 같다.
전체적으로는 스프링을 구동시켜 보고 스프링을 어떻게 쓰는지에 대한 강의였다. 개인 과제와 팀 과제가 주어졌는데, 한분이 팀 과제를 모두 해결해 버려서 개인 과제에만 집중할 수 있었다. 대신 대화가 단절되어 버렸지만...
꾸역꾸역 서버는 돌아가지만 복습을 해도 이해하지 못하는 부분들이 많았다. 점점 한주에 소화해야 할 양이 많아지는 느낌이다. 다음 주는 더 걱정이다...
스프링을 이해하기 위해 더 공부해야 할 것들이 많았다.
IOC, DI, Been
IOC(Inversion of control - 제어의 역전)
일반적으로 처음에 배우는 자바 프로그램에서는 각 개체들이 프로그램의 ㅡ름을 결정하고 각 개체를 직접 생성하고 조작하는 작업(객체를 직접 생성하여 메서드 호출)을 했다. 즉, 모든 작업을 사용자가 제어하는 구조였다. 예를 들어 A 객체에서 B 객체에 있는 메서드를 사용하고 싶으면, B 객체를 직접 A 객체 내에서 생성하고 메서드를 호출한다.
하지만 IOC가 적용된 경우, 객체의 생성을 특별히 관리 위임 주체에게 맡긴다. 이 경우 사용자는 객체를 직접 생성하지 않고, 객체의 생명주기를 컨트롤하는 주체는 다른 주체가 된다. 즉, 사용자의 제어권을 다른 주체에게 넘기는 것을 IOC(제어의 역전) 라고 한다.
요약하면 Spring의 IOC란 클래스 내부의 객체 생성 -> 의존성 객체의 메서드 호출이 아닌, 스프링에게 제어를 위임하여 스프링이 만든 객체를 주입 -> 의존성 객체의 메서드 호출 구조이다. 스프링에서 모든 의존성 객체를 스프링이 실행될 때 만들어주고 필요한 곳에 주입해준다.
DI(Dependency Injection - 의존성 주입)
어떤 객체(B)를 사용하는 주체(A)가 객체(B)를 직접 생성하는게 아니라 객체를 외부(Spring)에서 생성해서 사용하려는 주체 객체(A)에 주입시켜주는 방식. 사용하는 주체가(A)가 사용하려는 객체(B)를 직접 생성하는 경우 의존성(병경사항이 있는 경우 서로에게 영향을 많이 준다)이 높아진다. 하지만, 외부(Spring)에서 직접 생성하여 관리하는 경우에는 A 와 B의 의존성이 줄어든다.
Bean
우리가 알던 기존의 Java Programming 에서는 Class를 생성하고 new를 입력하여 원하는 객체를 직접 생성한 후에 사용했다. 하지만 Spring에서는 직접 new를 이용하여 생성한 객체가 아니라, Spring에 의하여 관리당하는 자바 객체를 사용한다. 이렇게 Spring에 의하여 생성되고 관리되는 자바 객체를 Bean이라고 한다. Spring Framework 에서는 Spring Bean 을 얻기 위하여 ApplicationContext.getBean() 와 같은 메소드를 사용하여 Spring 에서 직접 자바 객체를 얻어서 사용한다.
'개발일지' 카테고리의 다른 글
항해99 개발자가 되기 위한 7주 차 (0) | 2022.08.07 |
---|---|
항해99 개발자가 되기 위한 6주 차 (0) | 2022.07.31 |
항해99 개발자가 되기 위한 5주 차 (0) | 2022.07.24 |
항해99 개발자가 되기 위한 2주 차. (0) | 2022.07.03 |
항해99 개발자가 되기 위한 첫 주. (0) | 2022.06.26 |