✅ 1. SRP - 단일 책임 원칙 (Single Responsibility Principle)
하나의 클래스는 하나의 책임만 가져야 한다.
@Service
public class UserService{
private final UserRepository userRepository
//....
}
@RestController
public class UserController{
}
//ex 위에 예시 처럼 컨트롤러는 @RestController @Service 비즈니스 로직만
✅ 2. OCP - 개방-폐쇄 원칙 (Open/Closed Principle)
확장에는 열려 있고, 변경에는 닫혀 있어야 한다.
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByEmail(String email);
}
✅ 3. LSP - 리스코프 치환 원칙 (Liskov Substitution Principle)
부모 클래스의 인스턴스를 자식 클래스로 대체해도 문제가 없어야 한다.
✅ 4. ISP - 인터페이스 분리 원칙 (Interface Segregation Principle)
큰 인터페이스 하나보단, 여러 개의 구체적인 인터페이스가 낫다.
public interface UserRepository extend JpaRepository<User, Long> {
//
}
public interface BoardRepository extend JpaRepository<Board, Long> {
//
}
✅ 5. DIP - 의존 역전 원칙 (Dependency Inversion Principle)
상위 모듈은 하위 모듈에 의존하면 안 된다.
@Service
public class UserService {
// private UserRepository userRepository = new JpaRepository();
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
주석 처럼하지말라는거다 그뿐만 아니라 스프링 DI원칙에도 위배가 된다 스프링에서 어차피 에러라고 말해준다
'개발 공부 > Java-Spring' 카테고리의 다른 글
프로젝트#3 (0) | 2025.07.04 |
---|---|
개인프로젝트#2 (0) | 2025.07.01 |
개인 프로젝트 #1 (0) | 2025.06.30 |
객체끼리 비교할 때 무조건 equals메서드 사용할 것 (0) | 2025.06.12 |
record type (0) | 2025.06.11 |