728x90

전체 글 503

236일차(모험 145일차) - 처음부터 다시 해보기

처음엔 잘 작동 되던 css, js가 코드를 추가하면서 잘 동작되지 않아 문제가 되었는데 임시로 프로젝트를 하나 생성해서 로그인 코드부터 추가하면서 동작을 확인했다. * 로그인 기능만 추가했을 때 정상 동작 확인 (+ PagingResult 추가) * Registry 코드 추가 후 정상 동작 확인 이전에 작성했던 코드를 기능에 추가할 때마다 확인하면서 이 전에 확인하지 못했던 오류에 대해서 수정하게 되었다. 무인도 표류중인 팀원은 프론트 작업에 대한 에러만 확인하고 백엔드와 연결하면서 진행하지 않아 생긴 오류였다. 메뉴 탭마다 html url을 다르게 설정해놓은걸 확인하였다. (설명을 위한 예시일뿐 예시로 든 url은 실제 url아님) 동영상 탭에서는 10s.html로 되어야 하는데 게시글 탭에서 동영상..

TIL 2022.05.09

34주차

이번 주말은 프로젝트 코드에 집중했다. 결과물은 큰 변화가 없지만 계속 코드를 수정하기 위해 이것저것 찾아보다가 시간이 꽤 많이 지나갔다. 지금은 새로운 기능을 개발하기 보다 기존 코드를 수정하는 것에 초점을 맞춰 기존에 들었던 강의를 참고하며 진행하거나 임시로 새로 프로젝트를 생성해 기능 하나씩 추가하면서 어느 부분이 잘못 된건지 확인해 볼 예정이다. 그래서 다음주부터 엄청난(?) 글들을 작성하기 보다 한 두줄로 끝낼 것 같다.

WIL 2022.05.08

233일차(모험 142일차) - 자동, 수동의 올바른 실무 운영 기준

☝🏻편리한 자동 기능을 기본으로 사용한다. ✌🏻직접 등록하는 기술 지원 객체는 수동 등록 👌🏻다형성을 적극 활용하는 비즈니스 로직은 수동 등록을 고민해본다. 편리한 자동 기능을 기본으로 사용한다. - 자동을 선호하는 추세 - 자동 빈 등록을 사용해도 OCP, DIP를 지킬 수 있다. 수동 빈 등록을 사용하면 좋을 때 애플리케이션은 크게 업무 로직과 기술 지원 로직으로 나눌 수 있다. 업무 로직 빈 : 웹을 지원하는 컨트롤러, 핵심 비즈니스 로직이 있는 서비스, 데이터 계층의 로직을 처리하는 리포지토리등이 모두 업무 로직이다. 보통 비즈니스 요구사항을 개발할 때 추가되거나 변경된다. 기술 지원 빈 : 기술적인 문제나 공통 관심사(AOP)를 처리할 때 주로 사용된다. 데이터베이스 연결이나, 공통 로그 처리 ..

TIL 2022.05.06

232일차(모험 141일차) - 조회한 빈이 모두 필요할 때, List, Map

[add] 조회한 빈이 모두 필요할 때, List, Map [#32] #37 해당 타입의 스프링 빈이 다 필요한 경우도 있다. 예를 들어서 할인 서비스를 제공하는데, 클라이언트가 할인의 종류(rate, fix)를 선택할 수 있다고 가정해본다. 스프링을 사용하면 소위 말하는 전략 패턴을 매우 간단하게 구현할 수 있다. * AllBeanTest.java Map : map의 키에 스프링 빈의 이름을 넣어주고, 그 값으로 DiscountPolicy 타입으로 조회한 모든 스프링 빈을 담아준다. List : DiscountPolicy 타입으로 조회한 모든 스프링 빈을 담아준다. 만약 해당하는 타입의 스프링 빈이 없으면, 빈 컬렉션이나 Map을 주입한다. * 생성자 입력 대신 @RequiredArgsConstruct..

TIL 2022.05.05

230일차(모험 139일차) - 어노테이션 직접 만들기

[add] 애노테이션 직접 만들기 [#32] #36 @Qualifier("mainDiscountPolicy") 이렇게 문자를 적으면 컴파일시 타입 체크가 안된다. 다음과 같은 어노테이션을 만들어서 문제를 해결할 수 있다. annotation 폴더 생성 후 MainDiscountPolicy 어노테이션 생성 @Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Qualifier("mainDiscountPolicy") public @interface MainDisco..

TIL 2022.05.03

229일차(모험 138일차) - @Autowired 필드 명, @Qualifier, @Primary

@Autowired 필드 명, @Qualifier, @Primary 조회 대상 빈이 2개 이상일 때 해결 방법 - @Autowired 필드 명 매칭 - @Qualifier → @Qualifier끼리 매칭 → 빈 이름 매칭 - @Primary 사용 @Autowired 필드 명 매칭 @Autowired 는 타입 매칭을 시도하고, 이때 여러 빈이 있으면 필드 이름이나 파라미터 이름으로 빈 이름을 추가 매칭한다. 기존에 아래와 같이 입력하면 AutoAppConfigTest에서 오류가 떴었다. @Component public class RateDiscountPolicy implements DiscountPolicy { } @Component public class FixDiscountPolicy implement..

TIL 2022.05.02

33주차 - 강의 + 프로젝트

조회 빈이 2개 이상 - 문제 @Autowired 는 타입(Type)으로 조회한다. 타입으로 조회하기 때문에, 마치 아래 코드와 유사하게 동작한다. (실제로는 더 많은 기능을 제공한다.) ac.getBean(DiscountPolicy.class) * 기존 코드 @Component public class RateDiscountPolicy implements DiscountPolicy { } public class FixDiscountPolicy implements DiscountPolicy{ } 스프링 빈 조회에서 학습했듯이 타입으로 조회하면 선택된 빈이 2개 이상일 때 문제가 발생한다. DiscountPolicy 의 하위 타입인 FixDiscountPolicy , RateDiscountPolicy 둘 다..

WIL 2022.05.01

226일차(모험 135일차) - 롬복과 최신 트렌드

[add] 롬복과 최신 트렌드 [#32] #35 * 생성자가 딱 1개만 있으면 @Autowired를 생략할 수 있다. 더보기 @Component public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = d..

TIL 2022.04.29

225일차(모험 134일차)- 생성자 주입을 선택해라!

[add] 생성자 주입을 선택해라! [#32] #34 프레임워크 없이 순수한 자바 코드를 단위테스트 하는 경우 아래와 같이 수정자 의존관계일 때 public class OrderServiceImpl implements OrderService { private MemberRepository memberRepository; private DiscountPolicy discountPolicy; @Autowired public void setMemberRepository(MemberRepository memberRepository) { this.memberRepository = memberRepository; } @Autowired public void setDiscountPolicy(DiscountPolicy..

TIL 2022.04.28