개발공부 26

DI(의존관계 주입)와 DI 컨테이너

DI ( Dependency Injection ) 의존성 주입이 뭐에요? > 런타임에 외부에서 구현 객체를 생성하고 클라이언트에 전달하여 클라이언트와 서버의 의존관계가 연결되는 것을 의미 이를 이용해서 클라이언트 코드를 변경하지 않고, 클라이언트가 호출하는 타입 인스턴스를 변경할 수 있다. 이는 정적인 클래스 의존관계는 변경하지않고 동적인 객체 인스턴스 의존관계를 쉽게 변경할 수 있다는 의미이다. 그러면 DI 컨테이너는요? > 객체를 생성하고 관리하면서 의존관계를 연결해 주는 것 (ex. AppConfig)

좋은 객체 지향 설계의 원칙(SOLID)

S : SRP ; 단일 책임 원칙 O : OCP ; 개방/폐쇄 원칙 L : LSP ; 리스코프 치환 원칙 I : ISP ; 인터페이스 분리 원칙 D: DIP ; 의존 관계 역전 원칙 여기서 중요한 원칙은 SPR, OCP, DIP이다. SRP (Single Responsibility Principle) 는 한 클래스는 하나의 책임만 가져야 한다는 원칙이다. OCP (Open - Close Priciple) 은 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀있어야 한다는 원칙이다. DIP (Dependency Inversion Principle) 은 "구체화가 아닌 추상화에 의존해야 한다"는 원칙이다. -> 의존성 주입은 이 원칙을 따르는 방법 중 하나다.

[2]스프링 빈과 의존관계 _ 컴포넌트 스캔, 자바코드로 직접 등록

스프링은 스프링 컨테이너에 스프링빈을 등록하여 사용한다. 기본적으로는 싱글톤 (하나의 클래스에 하나의 객체만을 등록한후 공유)으로 등록한다. 즉, 같은 스프링 빈이면 모두 같은 인스턴스인 것이다. 이 스프링빈을 등록하는 방법에는 2가지가 있다. 1. 컴포넌트 스캔 2. 자바 코드로 직접 스프링 빈 등록 정형화된 코드의 경우 컴포넌트 스캔방식을 주로 사용한다. 정형화 되어있지 않거나, 상황에 따라 구현 클래스를 변경해야 하면 직접 스프링 빈으로 등록한다. 1. 컴포넌트 스캔 @Component 애노테이션이 있다면 스프링 빈으로 스프링 컨테이너에 객체로 자동 등록된다. @Component를 포함하는 @Controller, @Service, @Repository도 스프링 빈으로 자동 등록이된다. @Autowi..

[1]회원 관리 예제 - 백엔드 개발[테스트 코드 작성,서비스와 리포지토리]

서비스 : 핵심 비즈니스 로직 구현 리포지토리 : 데이터베이스에 접근 도메인 : 비즈니스 도메인 객체 단축키 : 작성한 코드를 별도의 메서드로 만드려면 단축키는? (메서드 추출) : Ctrl + Alt + m 테스트 파일을 쉽게 만드는 단축키는 ? : Ctrl + shift + t 게터,세터,생성자 단축키는? : alt + insert 반환형 만든는 단축키는? : ctrl + alt + v rename을 쉽게 도와주는 단축키는? shift + f6 1 . 회원 리포지토리 테스트 케이스 작성 테스트 케이스 작성 중 Assertions.assertThat에서 에러가 발생하였다. 질문 게시판에서 이유를 발견할 수 있었다. Assertion에는 import할 수 있는 2가지가 있다. 강사님께서는 assertj...

[0]프로젝트 환경설정과 스프링 웹 개발 기초

1. 프로젝트 환경 설정 ctrl + alt + s를 통해서 Reference에 들어가 gradle을 검색하고 gradle에서 intellij로 설정을 변경해준다. spring은 굉장히 방대하다. 필요한 것을 찾는 능력이 중요하다. spring.io에 들어가 project -> springboot로 @Controller public class HelloController { @GetMapping("hello") public String hello(Model model){ model.addAttribute("data","hello!"); return "hello"; // templete/hello.html을 찾아 렌더링 하기 } } 스프링 부트는 톰캣이라는 웹서버가 내장되어있다. 컨트롤러에서 문자열을 리턴..

[0]프로젝트 생성과 컨트롤러_ lombok과 H2,MockMvc가 뭐야?

인프런의 호돌맨의 요절복통 개발쇼를 구매하였다. 유튜브에서 호돌맨을 자주봤었기도 하고 스프링을 빠르게 공부하고 싶었었기 때문이다. 이 강의를 통해 공부해야할 길을 찾을 수 있기를 바란다. 강의를 듣고 따라하는 것에서 끝내는 것이 아니라 강의는 그저 길을 터주는 것이라 생각하고 모르는 것이 생기면 조사하고 공부하여 습득하고 내 지식으로 만들 예정이다. 근데 너무 생소한 개념이 많아서 김영한님 강의로 도망쳤다...김영한님 강의 빨리 듣고 이거 들을게요.. 1. 프로젝트 생성 인텔리제이에서 스프링 부트 프로젝트를 만들었다. 이름은 Durumlog -! 아무것도 하지 않은 페이지는 역시나 Error Page가 떴다. 2. 컨트롤러 생성 컨트롤러를 생성한 후에 다음과 같이 test에서도 동일한 위치에 폴더를 만들..