본문 바로가기

반응형

WINK-(Web & App)/Spring Boot 스터디

(59)
[2024-2 SpringBoot 스터디] 탁태현 #4주차 스프링 컨테이너스프링은 DI에 유용한 많은 기능을 위한 컨테이너를 제공하고 있다. IOC / DI 컨테이너의 필요성 예제 코드를 따라 치다 위와 같은 상황에서 null에러가 발생했다. 저장소에 저장을 분명히 했는데 값이 계속 없다고 에러가 발생했다.위 와 같은 경우에는 MemberRepository객체를 2번 생성하여 저장하는 곳과 찾는 곳이 달라서 에러가 발생헀던 것이다.이런 상황이 일어나지 않게 도와주는것이 IOC/DI의 역할이다.  이 경우에는 DiscountPolicy interface를 통해서 추상화를 진행했지만 OCP를 위한 하고 있다. OrderSerivceImpl이 DiscountPolicy와 RateDiscountPolicy를 모두 의존하고 있기 때문이다. 이것을 해결하기 위해서는 위와 ..
[2024-2 SprintBoot 스터디] 조상혁 #4주차 이 글은 스프링 핵심 원리 - 기본편을 기반으로 작성되었습니다. 객체 지향 원리 적용애자일애자일(Agile)은 소프트웨어 개발을 비롯한 다양한 프로젝트 관리 방식에서 사용되는 유연하고 반복적인 접근 방식 프로젝트를 진행할 경우에 생각보다 많이 쓸 일이 있으니 잘 알아두는 편이 좋다. 내가 이해한 대로 간단히 요약하면 애자일은 "소통" 이라는 단어 하나로 말할 수 있을 것 같다.고객과 소통, 팀원과 소통, 프로젝트와의 소통을 통하여 피드백을 적극적으로 수용하고 유연하게 대처하는 것이다.  회의.. 회의... 많은 회의와 준비.. GPT가 알려주는 애자일더보기전통적인 개발 방법론인 워터폴(Waterfall) 방식이 각 단계를 순차적으로 진행하는 것과 달리, 애자일은 **짧은 주기(스프린트)**로 작업을 나누..
[2024-2 SprintBoot 스터디] 김아리 #4주차 상황 설명기획자가 정액 할인제에서 정률 할인제로 정책을 바꿈따라서 개발자는 주문 서비스 클라이언트(OrderServiceImpl)에서 DiscountPolicy를 FixDiscountPolicy에서 RateDiscountPolicy로 바꿈public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository = new MemoryMemberRepository(); // 직접 클라이언트 코드를 수정하여 사용하고자 하는 구현체와 연결 private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private ..
[2024-2 SpringBoot 스터디] 정호용 #4주차 섹션 4~5 섹션 4- 새로운 할인 정책 개발(Class)RateDiscountPolicy.java(Test)RateDiscountPolicy.java코드 작성 후 command + option + t 로 테스트케이스 생성given-when-then 패턴으로 테스트 생성 - 새로운 할인 정책 적용과 문제점1. 역할 - 구현 분리 (O)2. 다형성 활용, 인터페이스와 구현 객체 분리 (O)3. OCP, DIP같은 객체지향 설계 원칙을 충실히 준수 (X) 클라이언트 코드인 OrderServiceImpl은 DiscountPolicy의 인터페이스와 구체 클래스를 함께 의존한다.->그래서 구체 클래스를 변경할 때 클라이언트 코드도 바꿔야 한다.->DIP위반 ->인터페이스에만 의존하게 변경이처럼 final을 빼고 선언만 하면 ..
[2024-2 SpringBoot 스터디] 정호용 #3주차 섹션 1~3 섹션 2. 객체 지향 설계와 스프링- 스프링이란?스프링 --> 여러 기술의 모음스프링 프레임워크 --> 스프링의 핵심스프링부트 --> 스프링을 더 쉽게스프링 데이터 --> RDB 의 CRUD는 비슷함. 이를 편리하게 쓰게 하기 위한 것. 스프링 데이터 JPA가 제일 많이 쓰임 스프링 프레임워크가 제일 중요!이 안에는 핵심 기술, 웹 기술, 데이터 접근 기술 등이 들어있음스프링부트 --> 스프링을 편리하게 사용할수 있도록 지원- Tomcat 웹 서버 내장- starter 종속성 : jpa, aop 등의 라이브러리를 쓸 때 하나만 가져오면 나머지를 가져오게 됨- 스프링과 3rd party 라이브러리 자동 구성- 관례에 의한 간결한 설정 스프링이라는 단어는 문맥에 따라 다르게 사용됨- 스프링 DI 컨테이너 기..
[2024-2 SpringBoot 스터디] 윤성욱 #3주차 다형성(Polymorphism)객체 지향 프로그래밍에서 다형성은 역할과 구현을 분리하여 코드의 유연성과 확장성을 높이는 강력한 도구이다. 다형성은 단순히 기술적 개념이 아니라, 실세계의 역할과 구현을 객체로 옮겨온 것이라 볼 수 있다. 예를 들어 운전자-자동차처럼, 역할만을 알고 있으면 다양한 구현을 선택할 수 있는 구조로, 이 구조가 바로 다형성의 핵심이라고 볼 수 있다. 운전자는 자신이 운전할 자동차의 내부 구조나 작동 방식에 대해 몰라도 되며, 운전자는 차를 운전하는 역할만 수행할 뿐이다. 여기서 자동차 역할은 운전자의 조작을 받아 차량을 움직이는 것이다.자동차 구현으로는 K3, 아반떼, 테슬라 모델3와 같이 다양하게 존재할 수 있다. 운전자가 ‘자동차’라는 역할만 알고 있다면, 어떤 자동차를 몰더..
[2024-2 SpringBoot 스터디] 조상혁 #3주차 이 글은 스프링 핵심 원리 - 기본편을 기반으로 작성되었습니다. 이번 강의의 목적스프링 기본 기능 학습스프링 본질의 이해객체 지향 설계를 고민하는 개발자로 성장위 목적을 되새기면서 강의를 들을 수 있도록 해야겠다. 객체 지향 설계와 스프링 작은 이야기..스프링이 없던 시절 자바 개발은 EBJ 라는 툴이 가장 많이 사용 되었다.다만 단점이 좀 있었는데 사용하기 어렵고 의존적이며 또한 비싸다는 것이다.이 단점이 별거 아닌것 같지만 당시 개발자들은 EBJ를 버리고 순수 자바 개발로 돌아가자고 할 정도로 여론이 좋지 않았다. 이 자바의 추운 겨울에 한줄기 빛 스프링과 하이버네이트가 오픈소스로 등장하고스프링은 지금의 사실상 표준기술이 되었다.또한 하이버네이트는 JPA 를 이루는 근간으로 새롭게 재탄생 하였다.이렇..
[2024-2 SpringBoot 스터디] 탁태현 #2주차 DI의 3가지 방법 강의에서는 DI를 하는 방법이 필드 주입, 생성자 주입, setter주입 이렇게 3가지가 존재 한다고 한다. 이것들에 대해서 자세히 알아보았다. 필드 주입필드 주입은 spring에서 제공하는 @Autowried 라는 어노테이션을 이용한다. @Serviceclass ThemeService { @Autowired private ThemeRepo themeRepo; public void 유저아이디로_주제_전체_가져오기() throws Exception { ... }}interface ThemeRepo{...{@Repositoryclass ThemeRepoImpl implements ThemeRepo {...}다음과 같이 의존성을 주입을 하고자 하는 객체 앞에 ..

반응형