이게 왜 되지

'이게 왜 되지'와 '이게 왜 안되지'의 향연입니다. 벌써 4주가 흘렀네요. 어느새 꽤 추운 날씨가 되었습니다. 이번주는 주특기 입문주차가 끝나고 숙련주차가 시작되었습니다. Spring이 왜 좋은지, 왜 사용하는 지에 대해서 알아가고 있습니다.

 

DI Dependency Injection 의존성 주입

객체를 직접 생성하지 않고 외부에서 생성한 후 주입시키는 방법입니다. 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로 인터페이스를 사이에 둬서 클래스 레벨에서는 의존 관계가 고정되지 않도록합니다. 런타임 시에는 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해줍니다.

 

두 객체 간의 관계를 맺어주는 것을 의존성 주입이라고 합니다. 생성자 주입, 필드 주입, setter 주입 등 다양한 주입 방법이 있지만 스프링에서는 생성자 주입을 권합니다. 특이 케이스가 아닌 경우 생성자 주입을 사용한다고 합니다. 

 

의존성이란 A가 변하면 그 영향이 B에 영향을 끼치는 것을 말합니다.

 

의존성 주입을 사용한다면 가독성이 높아질 뿐만 아니라 의존성이 줄어들어서 변경과 재사용이 용이해집니다.

 

관련 어노테이션에 대해서는 아래 포스팅을 참고해주시길 바랍니다.

 

TIL Spring @Component @Autowired 어노테이션 제어의 역전 221203

@Service 어노테이션 @Component 어노테이션 @Service 어노테이션은 @Component 어노테이션을 가지고 있음 -> 스프링이 자동으로 객체를 만들고 실행하는 흐름을 가져간다. 필요한 것을 알아서 생성해서 코

pizzathedeveloper.tistory.com

 

제어의 역전 IoC Inversion of Control

 

Don't call us, We'll call you

스프링을 사용할 때 개발자가 Controller, Service 등 객체를 직접 구현하기는 하지만, 해당 객체들이 언제 호출되는 지는 걱정하지않아도 됩니다. 스프링 프레임워크가 알아서 해당 객체들을 생성하고, 메서드를 호출하고 소멸시킵니다.

 

스프링을 사용하기 전에는 main 함수를 써서 직접 실행을 제어했지만 스프링 프레임워크를 사용하면서 제어권이 스프링에 넘어가게 된 것입니다. 이를 제어의 역전, Inversion of Control이라고 말합니다.

 

IoC의 장점은 아래와 같습니다.

  • 프로그램의 진행 흐름과 구현을 분리 할 수 있습니다.
  • 개발자는 비지니스 로직에 집중할 수 있습니다.
  • 객체간 의존성이 낮아집니다.
  • 코드가 유연해집니다.

 

빈 Bean

스프링 프레임워크의 IoC가 관리하는 객체를 Bean 이라고 합니다.

빈이 생성되면 말 그대로 콩 모양 아이콘이 생깁니다.

빈 아이콘

빈은 @Bean, @Component, @Service, @Repository와 같은 어노테이션으로 생성 될 수 있으며 개발자가 직접 설정할 수도 있습니다. @Component를 상속받는 어노테이션들은 모두 빈을 등록할 수 있습니다. 

 

개발자가 직접 빈 등록을 하려고 한다면 @Configuration 어노테이션을 사용합니다.

 

3주차 회고

할 일이 너무 많고 배워야하는 게 너무 많은데 다 못하고 있습니다. 새벽 늦게까지 공부를 한다고 해도 할 게 너무 많습니다. 그래도 이제는 CRUD의 원리와 기본 개념을 탑재하게 되었습니다.

 

JPA를 왜 사용하는지도 배우고,

 

 

TIL JPA 심화 영속성 컨텍스트 @Enumerated (feat. 꿈에서도 코딩)221202

어제 팀원들이랑 대화하다가 새벽 3시쯤 잠들어서 파워냅 30분했는데 코딩하는 꿈을 꿨습니다...😱 하루종일 코딩만 생각하니 이런 꿈도 꿉니다. 오늘은 주특기 2주차 시작일로 Spring 숙련주차입

pizzathedeveloper.tistory.com

 

CRUD를 구현하는 과제도 해보고,

 

TIL Spring boot 1주차 개인 과제 CRUD Postman JPA 221129

결국엔 해냈습니다!! 물론.. 수업에서 실습한 코드를 베이스로 작성한 것이지만요. 오늘 구현한 기능은 아래와 같습니다. 전체 게시글 수정 및 삭제: 제목, 작성자명, 작성 내용을 비밀번호를 일

pizzathedeveloper.tistory.com

 

자바 공부도 꾸준히 하고 있습니다.

 

 

혼자공부하는자바 7-3 추상 클래스

추상 클래스 객체를 직접 생성할 수 있는 클레스들의 공통적인 특성을 추철해서 선언한 클래스 추상클래스가 부모, 실체 클래스가 자식으로 구현되어 실체 클래스는 추상 클래스의 모든 특성을

pizzathedeveloper.tistory.com

 

 

남궁성 자바의 정석 기초편 ch 7 디폴트 메서드 static 메서드

디폴트 메서드와 static 메서드 인터페이스에 디폴트 메서드, static 메서드 추가 가능 (JDK1.8부터) 인터페이스에 새로운 메서드(추상 메서드)를 추가하기 어려움 해결책 => 디폴트 메서드(default method

pizzathedeveloper.tistory.com

 

여러가지를 하면서 한주가 순식간에 지나갔습니다.

 

알고리즘 공부를 하나도 못해서 큰일입니다. 

다음 주에는 적어도 이틀에 한 문제는 풀려고 합니다.

 

4주차도 화이팅😎😎

+ Recent posts