목록전체 글 (531)
개발놀이터
이 포스팅은 인프런 김영한 님의 스프링 핵심 원리 기본 편을 보고 각색한 포스팅입니다. 자세한 내용은 강의를 확인해주세요 우리는 앞서 직접 MVC 프레임워크를 만들었다. 안정적인 아키텍처와 사용자의 편의를 위한 기능도 추가했었다. https://coding-review.tistory.com/87 MVC 프레임워크 만들기 이 포스팅은 인프런 김영한 님의 스프링 핵심 원리 기본 편을 보고 각색한 포스팅입니다. 자세한 내용은 강의를 확인해주세요 우리는 앞으로 점진적인 버전업을 통해 스프링 MVC를 구현해 볼 것 coding-review.tistory.com 이번엔 우리가 직접 만든 MVC 프레임워크와 스프링 MVC 프레임워크를 비교해보고 스프링 MVC에 대해 좀 더 자세히 알아보는 시간을 가지려 한다. 먼저 ..
이 포스팅은 인프런 김영한 님의 스프링 핵심 원리 기본 편을 보고 각색한 포스팅입니다. 자세한 내용은 강의를 확인해주세요 우리는 앞으로 점진적인 버전업을 통해 스프링 MVC를 구현해 볼 것이다. -프론트 컨트롤러 도입 (v1) -View 분리 (v2) -Model 추가 (v3) -단순하고 실용적인 컨트롤러 (v4) -유용한 컨트롤러 (v5) 순으로 구현해 나갈 것이다. 스프링 MVC에서 가장 중요한 부분이 바로 프론트 컨트롤러 패턴이다. 스프링에선 프론트 컨트롤러를 디스패쳐 서블릿으로 구현했다. 프론트 컨트롤러란 서블릿 하나를 모든 컨트롤러 앞에 두고 클라이언트 요청을 이 앞에 있는 서블릿이 먼저 받게 하여 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출해주는 역할을 한다. 기본이 되는 엔티티와 R..
이 포스팅은 인프런 김영한 님의 스프링 핵심 원리 기본 편을 보고 각색한 포스팅입니다. 자세한 내용은 강의를 확인해주세요 의존관계 주입에는 다양한 방법이 있다.-생성자 주입-수정자 주입 (setter 주입)-필드 주입 이제부터 하나씩 살펴보며 어떤 방법을 지향해야 하는지 알아보자 1. 생성자 주입 말 그대로 생성자를 통해서 의존 관계를 주입 받는 방법이다. 여태까지 우리가 진행했던 방법이 바로 생성자 주입이다. *특징 -생성자 호출시점에 딱 한번만 호출되는 것이 보장된다. -불변, 필수 의존관계에 사용 불변, 필수 의존관계에 사용한다는 것은 어떤 의미를 가지고 있을까? 불변이라는 의미는 생성자는 클래스가 생성되는 순간에 바로 결정되기 때문에 수정자가 없는한 값을 변경할 수 없는 의미이다. 또한 필수라는 ..
이 포스팅은 인프런 김영한 님의 스프링 핵심 원리 기본 편을 보고 각색한 포스팅입니다. 자세한 내용은 강의를 확인해주세요 https://coding-review.tistory.com/84 싱글톤과 @Configuration 이 포스팅은 인프런 김영한 님의 스프링 핵심 원리 기본 편을 보고 각색한 포스팅입니다. 자세한 내용은 강의를 확인해주세요 싱글톤 패턴이란 무엇일까? 싱글톤 패턴이란 클래스의 인스턴스가 coding-review.tistory.com 앞서 우리는 @Configuration의 비밀과 싱글톤 컨테이너인 스프링 컨테이너에 대해서 자세히 알아봤다. 근데 여기서 한가지 문제가 있다. AppConfig가 지금은 작으니까 상관없는데 애플리케이션이 점점 커지면 스프링 빈으로 등록해야 하는것이 수십개 수..
이 포스팅은 인프런 김영한 님의 스프링 핵심 원리 기본 편을 보고 각색한 포스팅입니다. 자세한 내용은 강의를 확인해주세요 싱글톤 패턴이란 무엇일까? 싱글톤 패턴이란 클래스의 인스턴스가 딱 한개만 생성되는 것을 보장하는 디자인 패턴이다. 인스턴스가 딱 한개만 생성되지 않는다면 고객이 요청할 때마다 인스턴스를 새로 만들어야한다. 인스턴스를 계속 새로 만들면 메모리 낭비가 심하기 때문에 인스턴스는 하나만 만드는것이 좋다. public class SingletonService { //1. static 영역에 객체를 딱 1개만 생성해둔다. private static final SingletonService instance = new SingletonService(); //2. public으로 열어서 객체 인스터스..
이 포스팅은 인프런 김영한 님의 스프링 핵심 원리 기본 편을 보고 각색한 포스팅입니다. 자세한 내용은 강의를 확인해주세요 순수한 자바를 이용해서 DI를 구현해봤다. https://coding-review.tistory.com/82 순수한 자바로 DI 구현하기 이 포스팅은 인프런 김영한님의 스프링 핵심 원리 기본편을 보고 각색한 포스팅입니다. 자세한 내용은 강의를 확인해주세요 코드에 들어가기 전 이 코드의 배경이 되는 스토리가 있는데 사장님 coding-review.tistory.com 이번에는 스프링을 이용해서 DI를 구현해보자 이전의 AppConfig를 다음과 같이 변경하면 된다. @Configuration public class AppConfig { @Bean public MemberService m..
이 포스팅은 인프런 김영한님의 스프링 핵심 원리 기본편을 보고 각색한 포스팅입니다. 자세한 내용은 강의를 확인해주세요 코드에 들어가기 전 이 코드의 배경이 되는 스토리가 있는데 사장님이 할인 정책을 구상하는데 VIP에게 정액할인제를 할지 정률할인제를 할지 고민하는 상황이다. 사장님이 할인 정책에 대해서는 중요한 사항이므로 런칭하기 바로 직전까지 생각하다 적용할 예정이다. 기획자는 일단 둘 다 만들어 놓고 우선 정액할인제를 적용한 상태로 개발에 착수하라는 지령이 떨어졌다. 우리의 개발자는 언제 할인 정책이 바뀔지 모르는 상황에서 개발에 착수해야 하며 런칭 바로 직전에 할인정책이 바뀔수도 있는 상황이다. Member.java public class Member { private Long id; private..
*객체지향 설계 SOLID 1. SRP (Single Responsibility Principle) : 단일 책임 원칙 -한 클래스는 하나의 책임만 가져야 한다. -하지만 하나의 책임이라는 것은 모호하다. --클 수도 있고, 작을 수도 있다. --문맥과 상황에 따라 다르다. -중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것 2. OCP (Open / Closed Principle) : 개방-폐쇄 원칙 -소프트웨어 요소는 확장에는 열려 있으나, 변경에는 닫혀 있어야 한다. -이런 거짓말 같은 말이? 확장을 하려면 당연히 기존 코드를 변경해야 하는것이 아닌가? -다형성을 활용해보면 된다. -인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현한다. ..
타임리프를 사용하면서 동적으로 클래스를 추가해주고싶은 경우가 있을 것이다. 예를 들어 값이 1이면 클래스를 추가하고 2면 클래스를 추가하고 이런식으로 말이다. 그럴 때 타임리프에선 classappend라는 기능을 제공한다. 공지사항 위의 예제는 notice의 값이 1이면 notice라는 클래스를 추가하는 문법이다. 나의 경우 공지사항을 상단에 노출시키고 노출시킨 공지사항만 색을 칠해주고 싶었다. 이와 같은 문법으로 th:errorclass 라는 문법도 존재한다. errorclass 는 BindingResult 값으로 에러가 넘어오면 클래스를 추가해주는 문법이다. 자세한 내용은 아래의 게시글을 참고하자 https://coding-review.tistory.com/72 스프링 Validation 본 포스트는..
구글의 SMTP를 이용하던 중 생긴 오류 구글링을 해보니 사용중인 구글 계정에 대해서 보안 수준이 낮은 앱 엑세스가 허용되지 않아서 메일을 보내는데 실패한 것으로 판단, 해결방법으로는 계정의 보안 수준이 낮은 앱의 엑세스 탭으로 이동하여 허용해주면 된다. 이렇게 하면 해결 되지만.. 보안이 취약해질 수 있다는 말이 좀 꺼림칙해서 다른 해결 방법을 찾아보기로 마음먹었다. 로그에 찍힌 주소로 들어가보면 이런 내용이 나온다. https://support.google.com/mail/?p=BadCredentials 다른 이메일 플랫폼을 통해 Gmail 확인하기 - Gmail 고객센터 도움이 되었나요? 어떻게 하면 개선할 수 있을까요? 예아니요 support.google.com 2단계 인증이 필요한 SMTP는 앱..