"책을 보면서 정리한 내용입니다." 틀린 내용이 있다면 댓글 부탁드립니다. chapter2에서는 객체지향 개발 원칙 중 SRP(단일 책임 원칙)에 대한 챕터이다. 테스트코드도 나오지만 SRP가 주된 내용이기에 SRP에 집중하여 글을 작성하였다. SRP(Single Responsibility Principle) - 단일 책임 원칙?? SRP는 하나의 클래스는 하나의 책임만을 가진다는 원칙 일반적으로 SRP는 클래스와 메서드에 적용한다. 소프트웨어의 유지보수성을 높이고 오류의 범위를 최소화 할 수 있다. 코드가 변경되는 이유를 한 가지로 제한할 수 있다. 해당 책에서 SRP를 위반 하는 안티 패턴으로는 아래의 두 가지를 설명하고 있다. 갓 클래스 한 개의 파일에 모든 코드를 구현한 것이고, 한 클래스로 모든..
데이터를 파라미터로 전달하는 방법에는 두 가지 방법이 존재한다. Call By Value 함수 호출 시 파라미터로 값의 복사복을 전달한다. 호출 함수에서 해당 파라미터를 변경하거나 하더라도 실제 데이터에는 아무런 영향을 끼치지 않는다. Call By Reference 함수 호출 시 파라미터로 전달되는 변수의 래퍼런스(주소)를 전달한다. 따라서 호출 함수에서 파라미터를 변경하면 실제 주소를 참조하여 원본 데이터가 변경된다. 그럼 자바는 Call By Value일까 Call By Reference일까? 결론부터 말하자면 자바는 Call By Value로서 동작한다. 인자로 넘기는 종류에는 기본 타입과 객체 두 가지가 존재한다. "파라미터로 기본 타입을 넘기는 경우" 파라미터로 기본 타입을 넘기는 경우 JVM..
스프링 부트 환경에서 코드를 작성하던 와중에 문득 그런 생각이 들었다. “나는 왜 의존주입할 때 생성자 주입을 주로 사용하고 있지?” 저 생각이 떠올랐지만 명확하게 이유를 설명할 수는 없었다. 그래서 이번 기회에 왜 생성자 주입을 사용하고 많은 사람들이 생성자 주입을 하는지 알아보겠다. 의존주입의 종류 의존주입의 종류에는 보통 세가지가 있다. 생성자 주입 의존관계가 변하지않고 필수로 필요한 경우에 사용 스프링에서는 생성자가 하나 있다면 @Autowired 생략가능 필드를 final로 선언가능 => 불변 선언 가능 @Service public class TestService { private final BoardRepository boardRepository; @Autowired public TestSer..
추상클래스?? 추상 메서드를 하나라도 가지고 있는 클래스이고 클래스 선언부에 abstract 키워드를 명시해야 한다. 이러한 클래스를 추상 클래스라고 한다. 그리고 추상 클래스는 단독으로 인스턴스를 생성할 수 없다. 만약 인스턴스를 생성하고자 한다면 상속을 통해 자식 클래스에서 완성을 한 후 생성해야한다. public abstract class Employee { .... public abstract void 메서드(); //추상메서드 } extends 키워드를 통해 자식 클래스에게 상속한다. 자바에서 추상클래스는 대게 공통된 속성을 추상 클래스에 묶음으로서 코드를 재사용할 수 있게 해준다. 인터페이스?? 인터페이스는 다른 클래스를 작성하는데 도움을 주는 목적으로 작성하고 추상클래스와 다르게 implem..
String 클래스와 StringBuffer, StringBuilder클래스의 차이 String은 불변이라는 특징을 가지고 있는 것이 StringBuffer, StringBuilder와의 가장 큰 차이점이다. JVM의 Heap 메모리 영역에는 String Pool이라는 것이 존재하는데 어떤 문자열을 사용하는데 String Pool에 동일한 문자열이 존재한다면 이를 재사용한다. String str = "hello world"; str = "hello world and Hi!!!"; 위 코드를 보면 str은 "hello world"로 정의한다. 그리고 아래에서 "hello world and Hi!!!" 라는 문자열로 변경한다. 언뜻보면 str에 있는 내용을 수정하는 것처럼 보이지만 아니다. 참조를 변경하는 ..
이번에 SpringBoot가 3.0.0 버전으로 업데이트가 되었다. 그래서 나는 Spring Initializ에서 3.0.0으로 프로젝트를 만들어 QueryDSL을 사용하여 프로젝트를 진행하려 했다. 프로젝트 버전 : SpringBoot 3.0.0, QueryDSL 5.0.0 그래서 build.gradle에서 QueryDSL에 대한 의존주입 및 여러 설정을 마치고 'complieQueryDSL'을 진행했는데 오류가 발생했다... java.lang.NoClassDefFoundError Unable to load class 'javax.persistence.Entity' javax.peresistence.Entity 에 대한 클래스가 없다고 하는것 같다.. (분명 이전버전 까지는 잘 됐는데...) 그래새 오..
- Total
- Today
- Yesterday
- querydsl
- 게시판#자바#JPA#Entity
- 7568
- 스프링
- 백엔드#게시판
- 백준#서강근육맨#20300
- list
- 자바
- springboot
- 백준#잃어버린 괄호#1541
- this()
- arraylist
- controller
- 1978
- 백준
- 서블릿#Servlet
- 11659
- 파이썬
- Spring
- 오류
- HTTP#HTTP특징
- 덧칠하기
- 프로그래머스
- 1316번
- MVC
- java
- 회고
- 4673번
- 대충 만든 자판
- 사탕 게임#백준#3085
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |