분류 전체보기

2주차 목표 2주차의 목표는 MVC패턴 적용과 테스트 코드와 친해지기였다. 운이 좋게도 이번주 학습 목표가 '테스트 코드에 익숙해지기'여서 테스트 코드에 집중할 수 있었다. MVC패턴 적용하기 MVC패턴을 적용하기 위해 먼저 model, view, cotroller패키지를 만들어두고 어떻게 설계해야할지 고민했다. 각 컴포넌트들이 서로 어떻게 대화해야하는지 공부하고, 프리코스 커뮤니티에 올라온 수많은 1주차 미션 PR들 중 MVC패턴을 적용한 10명의 코드를 분석해봤다. 누군가는 view가 controller에서 받은 값을 분해해서 보여주기도하고 또 다른 누군가는 view가 완전히 출력 형식으로 변환된 값만 받도록 하는 등, 같은 디자인 패턴이라도 각기 다른 모양 가지고 있었다. 그래서 나는 필요한 기능들..
· Java
팩토리 메서드 패턴이란? 오버라이드된 메서드가 객체를 반환하는 패턴 팩토리 메서드 : 객체를 생성함과 동시에 반환하는 메서드 하위 클래스에서 팩토리 메서드를 오버라이딩해서 서로 다른 객체를 반환한다. 하위 클래스에서 구체적인 객체 생성 방법을 결정한다. 객체지향 설계 원칙 중 의존 역전 원칙(Dependency Inversion Principle)이 적용된 패턴이다. 템플릿 메서드 패턴과 비슷하면서도 다르다. 템플릿 메서드 패턴은 식품 공장 중 하나의 과자 공장에서 서로 다른 종류의 과자를 만드는 거라면 팩토리 메서드 패턴은 식품 공장 중 과자 종류별 공장들에서 각자의 과자를 만드는 거라고 볼 수 있다. 팩토리 메서드 패턴은 생성자를 반환해서 그 생성자만의 동작을 수행하도록 하는데 초점이 맞춰저 있다. ..
· Java
템플릿 메서드 패턴이란? 상위 클래스의 템플릿 메서드에서 하위 클래스가 오버라이딩한 메서드를 호출하는 패턴 객체지향 설계 5원칙 중 의존 역전 원칙(Dependency Inversion Principle)이 적용된 디자인 패턴 상위 클래스에 공통 로직을 수행하는 템플릿 메서드를 둔다. 템플릿 메서드 안에서 추상 메서드 또는 hook메서드를 호출한다. 하위 클래스마다 추상 메서드, hook메서드를 오버라이딩해 서로 다른 동작을 하게 한다. 상위 클래스 타입으로 하위 클래스 객체를 선언한다. 객체의 템플릿 메서드를 호출한다. hook메서드 상위클래스에서 디폴트 기능을 정의해두거나 비워뒀다가 하위클래스에서 선택적으로 오버라이드할 수 있도록 만들어둔 메서드 abstract 키워드가 없는 메서드 템플릿 메서드 상..
· Java
static에 대해서 static멤버는 JVM이 종료될때까지 메모리의 static영역에 배치된다. 그러므로 static멤버를 많이 사용할수록 메모리를 많이 사용하게 된다. 장점 간결한 코드 작성 가능 어디서든 접근 가능 heap영역에 생성 및 해제할 필요 없어 GC(가비지컬렉터) 오버헤드를 줄여줌 단점 무분별한 사용은 메모리 부족 야기 캡슐화(한 객체가 갖고있는 데이터들은 외부에서 함부로 접근하여 수정할 수 없는) 위배 static메서드는 인터페이스를 구현하는데 사용될 수 없어 재사용성이 떨어짐 thread-safe하지 않아 멀티 스레드 동작에서 충돌 발생할 수 있음 static은 언제 써야할까? 클래스 설계시, 공통적으로 사용되는 변수나 메서드에 붙인다. 인스턴스 변수(Non-static멤버 변수)를 ..
· Java
우테코 프리코스 커뮤니티에서 객체지향 생활체조를 알게되었고 때문에 일급 컬렉션을 처음 접했다. 일단 일급 컬렉션이 뭔지부터 알아보았다. https://jojoldu.tistory.com/412 일급 컬렉션 (First Class Collection)의 소개와 써야할 이유 최근 클린코드 & TDD 강의의 리뷰어로 참가하면서 많은 분들이 공통적으로 어려워 하는 개념 한가지를 발견하게 되었습니다. 바로 일급 컬렉션인데요. 왜 객체지향적으로, 리팩토링하기 쉬운 코 jojoldu.tistory.com https://tecoble.techcourse.co.kr/post/2020-05-08-First-Class-Collection/ 일급 컬렉션을 사용하는 이유 일급 컬렉션이란? 본 글은 일급 컬렉션 (First Cl..
테스트 코드 따로 테스트 코드를 작성하지 않았다. 왜냐하면 기능 테스트를 대부분 콘솔창 출력으로 대신했기 때문이다. 하지만 콘솔 출력으로 확인하기에는 테스트하기 어려운 부분이 존재했고, 테스트 코드 작성의 필요성을 체감했다. 그래서 2주차부터는 테스트 코드를 적극적으로 작성해볼 것이다. 객체지향 생활체조 프리코스 커뮤니티에서 '객체지향 생활체조'라는 것을 처음 알게되었다. 이때까지 객체지향의 개념만 알고 어떻게 코드로 녹여내는지 몰랐는데, 객체지향 생활체조는 객체지향적인 코드를 위해 지켜야할 코딩 규칙이었다. else를 사용하지 않으면서 자연스럽게 메서드 분리가 일어났고 들여쓰기 1만 지키려고 하니 또 메서드를 분리하는 경우가 많았다. 또 List객체에 숫자를 담았는데, 이런 컬렉션 객체를 일급 컬렉션으..
· Springboot
usernameParameter( input태그의 name속성 ) passwordParameter( input태그의 name속성 ) 를 제대로 넣어줬는지 확인하자 spring boot 3.1.4는 spring security 6.1.4를 지원하는데, SecurityFilterChain에 deprecated 메서드들이 많아서 SecurityConfig를 수정했다. @RequiredArgsConstructor @Configuration @EnableWebSecurity public class WebSecurityConfig { @Bean public WebSecurityCustomizer configure() { return (web -> web.ignoring() .requestMatchers(toH2Co..
· Springboot
intellij community버전은 밑바닥부터 설정해야한다. 아래 글을 따라했다. https://www.bsidesoft.com/6160 [java] 인텔리제이 무료 버전으로 스프링5 MVC개발하기(Maven) - Bsidesoft co. 개요 돈 많은 회사의 직원 분들은 그저 회사에 인텔리제이 얼티밋을 사달라고 하면 해결될지 모르겠지만 우리 같은 서민은 그게 쉽지 않습니다. 다행히 무료버전인 community 에디션이 있죠! 사실 www.bsidesoft.com 최신 intellij의 인터페이스가 달라져서 프로젝트 생성부분을 다시 쓴다. 1. 메이븐 프로젝트 생성하기 Project를 클릭한다. Name : 프로젝트 이름 Language : Java 선택 Build system : Maven 선택 J..
· Springboot
JUnit4와 JUnit5는 테스트 코드가 조금 다르다. 의존성 주입은 Tire인터페이스를 구현한 KoreaTire, AmericaTire클래스를 Car클래스에 주입하는데, xml파일에서 Car의 에 를 추가해 tire를 받게 했다. xml 그리고 JUnit으로 테스트를 해봤더니 org.junit.runners.model.InvalidTestClassError가 떴다. 왜 그런지 검색해보니 JUnit4와 JUnit5의 테스트 코드가 조금 달랐기 때문이다. JUnit4 package expert003; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowir..
· Springboot
오타 수정, 경로 수정, 코드 수정으로도 안될때 해결방법: xml파일이 resources폴더에 없다면 resources폴더로 옮기고 xml경로는 resources하위 상대 경로로 수정!! 책을 보며 setter로 의존성 주입하는 방법을 실습했다. expert002패키지에 Tire 인터페이스를 만들고 KoreaTire클래스, AmericaTire클래스에서 구현했다. 그리고 Car클래스에서 setter메서드로 Tire객체를 받는 방식이다. 이를 Driver클래스에서 실제 객체를 만들어 주입한다. 이때 책에서는 xml파일에 bean객체를 등록하는 방식을 사용했다. expert002.xml 이며 ClassPathXmlApplicationContext.getBean(클래스별칭, 클래스명.class)로 해당 bea..
siwoli
'분류 전체보기' 카테고리의 글 목록 (4 Page)