개발공부/[spring]김영한_스프링입문 11

@Entity

@Entity : 해당 클래스가 엔티티임을 알려준다. JPA에서 해당 클래스의 필드를 이용하여 DB에 테이블을 만들어준다. 참고 블로그 : https://whitepro.tistory.com/265 스프링 부트 : 기본 개념 1) Entity, Repository 개념 개인적인 정리와 기록을 위한 글이다. 혹시라도 참고해주시는 분들께서는 정확하지 않은 내용이 많으니 유의해주시길 바란다. 자바 진영의 백엔드 개발을 아무런 지식없이 시작하게 되었다. 현 whitepro.tistory.com

Thymleaf가 뭔데?

타임리프 공식 사이트 : https://www.thymeleaf.org/ Thymeleaf Integrations galore Eclipse, IntelliJ IDEA, Spring, Play, even the up-and-coming Model-View-Controller API for Java EE 8. Write Thymeleaf in your favourite tools, using your favourite web-development framework. Check out our Ecosystem to see more integrati www.thymeleaf.org thymleaf는 템플릿 엔진 중 하나이다. 템플릿 엔진은 서버의 데이터와 정적자원(html, css)를 조합하여 결과물을 만들어..

의존관계 주입 방법에는 뭐가 있을까?

의존관계 주입 방법에는 4가지가 있다. 1. 생성자 주입 2. 수정자 주입 3. 필드 주입 4. 일반 메서드 주입 스프링은 스프링 빈 등록 단계와 의존관계 주입 단계로 나뉘어져있다. 1. 생성자 주입 1) 스프링이 컴포넌트 스캔을 한다. 2) @Component가 붙은 메서드를 스프링 빈에 등록한다. 3) 스프링 빈에 등록하기위해서는 생성자를 호출해야한다. 4) 생성자를 호출하러 갔는데 @Autowired가 붙어있다. 5) 이는 생성자의 파라미터이 있는 것들을 스프링 컨테이너에서 스프링 빈을 갖고와서 주입해준다. 호줄 시점에 딱! 1번만 호출된다는 특정이 있고 불변, 필수 의존관계에서 사용된다. 만일 생성자가 1개만 있으면 @Autowired를 생략해도 된다. 2. 수정자 주입 생성자 대신 (생성자를 없..

싱글톤과 스프링 컨테이너

싱글톤 패턴이 뭐에요? 하나의 클래스에 하나의 인스턴스만 생성되는 것을 보장하는 디자인 패턴 -! 스프링은 주로 웹 어플리케이션을 개발할 때 사용한다. 웹 어플리케이션은 사용자의 요청이 참 많고 동시에 이뤄지는 경우가 많다. 이러한 요청 때마다 객체가 만들어진다면 메모리 낭비가 심하다. 그래서 static으로 객체를 1개를 생성한 후 private으로 생성자를 선언하여 외부에서 new 를 이용해 객체 생성하는 것을 막는다면 싱글톤 패턴을 구현할 수 있다. 이를 이용하면 고객의 요청마다 객체를 생성하는 것이 아니라, 이미 만들어진 객체를 공유해서 효과적으로 사용할 수 있다. 하지만 여러 문제점이 존재한다. 싱글톤을 구현하는 코드가 꽤 필요하고, 구체 클래스에 의존하여 DIP를 위반하고, 테스트가 어려우며 ..

스프링 컨테이너와 스프링 빈_(feat.BeanDefinition)

1. 스프링 컨테이너 ? ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext를 스프링 컨테이너라고 한다. 2. AnnotationConfigApplicationContext 와 GenericXmlApplicationContext ApplicationContext는 인터페이스이다. JAVA : AnnotationConfigApplicationContext 는 인터페이스를 구현한 구현체이다. AnnotationConfigApplicationContext는 java 클래스를 이용해서 bean을 등록하는 방식이고 최근에 주로 사용된다. XML : Applic..

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...