본문 바로가기

Spring19

[카카오테크캠퍼스] 3단계 개발 2주차 회고 이번 주는 엔티티 생성을 하기로 하였다. 회의내역백,  프론트 회의API 문서와 기능명세서의 필드 종류가 다르다공고글 부분에서 필드가 기존 형태와 다른 문제가 있었다. 이 부분은 내가 담당한 부분이라 필요한 필드를 결정해서 모두 api명세서에 반영하였다. 번역 기능을 백엔드측에서 해주어야 할 것 같다.프론트엔드 측에서 찾아본 결과 고정된 문구는 번역이 가능하지만, 백엔드에게 받아 띄우는 데이터는 번역이 어려울 것 같다고 하셔서 이 부분도 백엔드 측에서 해주면 좋겠다고 하셨다. 메인 기능과 부가기능 구별개발 할 때 메인 기능과 부가기능을 구별하는 것이 좋을 것 같다는 의견이 나와서 다같이 구별해보았다.우리 기능 중 번역 기능과 근로계약서를 잘 쓰는 사장님에게 뱃지를 주는 기능은 부가기능으로 설정하기로 하였.. 2024. 10. 4.
[spring] 스프링 컨테이너와 스프링 빈 스프링 컨테이너 생성ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);이렇게 하면 스프링 컨테이너가 생성된다. ApplicationContext는 인터페이스이다. AnnotationConfigApplicationContext는 이 인터페이스의 구현체이다. 스프링 컨테이너를 만들 때에는 구성정보를 설정해주어야한다. 여기서는 AppConfig.class를 구성정보로 지정하였다. 스프링 컨테이너는 파라미터로 넘어온 설정 클래스 정보로 스프링 빈을 등록한다.빈 이름은 메서드 이름으로 만들어지고, 직접 부여할수도 있다.빈 이름은 무조건 서로 달라야한다. 스프링 컨테이너는 설정 정보를 참고해서 .. 2024. 10. 4.
[spring] 관심사 분리 나는 spring의 기초부터 배웠다기보다는 정말 구현을 위한 지식만을 쌓았어서 spring이 어떤 면에서 좋은지, 그리고 의존성 주입 부분이 왜 중요한지 잘 몰랐었는데, 스프링 없이 자바로 관련 기능을 구현해보니까 알 수 있게 되었다.AppConfig로 관심사 분리public class MemberServiceImpl implements MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository; }이런 식으로 memberService에서 사용하는 MemberRepository를 생성할 때 코드에서 바로 구현체를 사용해서 생성하면 DIP를 위배한다(클라이언트는 인터페이스만 코드에 써야.. 2024. 10. 2.
[에러 해결] Error creating bean with name~ 분명 잘 돌아가는 코드가 깃에 올라가있었고, 이를 그대로 clone해와서 yml파일만 추가했는데 이러한 오류가 났다.빈이 등록이 안되어있다고? 그럴 리가 없었다...그러다가 yml파일과 @Value로 연결되어있는 부분에 값이 업데이트 되어있지 않은 것을 확인하게되었다이유를 찾다가 resources파일이 엉뚱한 곳에 들어가있다는 것을 알 수 있었다. resources를 꼭 main안에 넣자..! 2024. 9. 24.
[Spring] 객체지향설계와 스프링 스프링에 객체지향 개념 이야기가 나오는 이유스프링은 DI(Dependency Injection)라는 의존관계 주입과 DI 컨테이너 제공으로 다형성 + OCP와 DIP를 가능하게 지원한다.클라이언트 코드의 변경 없이 기능 확장이 가능하다 스프링이 없던 시절엔 OCP와 DIP원칙을 지키면서 개발을 해보니 너무 할 일이 많았다. 이를 위해 프레임워크를 만들었다. 정리모든 설계에 역할과 구현을 분리하자공연으로 예를 들면 배역만 만들어두고 배우는 언제든지 유연하게 변경할 수 있도록 하는 것이 좋은 객체지향설계이다.이상적으로는 모든 설계에 인터페이스를 부여하자 실무적인 관점에서인터페이스를 도입하려면 추상화라는 비용이 발생한다. -> 예를 들어 특정 코드를 보기 위해 파일을 한번 더 열어보아야한다.따라서 기능을 확장.. 2024. 9. 15.
[Spring] 좋은 객체 지향 설계의 5가지 원칙(SOLID) SRP 단일 책임의 원칙한 클래스는 하나의 책임만 가져야한다.하나의 책임이라는 것은 모호중요한 기준은 변경이다. 변경이 있을 때 파급효과가 적으면 단일책임원칙을 잘 따른 것 OCP 개방-폐쇄 원칙확장에는 열려있으나 변경에는 닫혀 있어야한다.다형성을 활용해보면 이를 구현할 수 있다. -> 기존 코드는 그대로 두고 새로 이를 바탕으로 한 객체를 구현함으로써 해결인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현public class MemberService{ private MemberRepository memberRepository = new MemoryMemberRepository(); private MemberRepository memberRepository = new Jdb.. 2024. 9. 15.