본문 바로가기

스프링

[스프링| 스프링 핵심 원리 | 기본편 | 스프링 핵심 원리 이해2 - 객체 지향 원리 적용]리팩터링, 새로운 구조와 할인 정책 적용 리팩터링 전public class AppConfig { public MemberService memberService() { return new MemberServiceImpl(new MemoryMemberRepository());} public OrderService orderService() { return new OrderServiceImpl( new MemoryMemberRepository(), new FixDiscountPolicy());}public class AppConfig { public MemberService memberService() { return new Memb.. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 스프링 핵심 원리 이해2 - 객체 지향 원리 적용]관심사의 분리 public class AppConfig { // AppConfig라는 클래스를 정의하여 애플리케이션 서비스를 구성합니다. public MemberService memberService() { // MemberService 타입의 객체를 생성하고 반환하는 메서드입니다. return new MemberServiceImpl(new MemoryMemberRepository()); // MemberServiceImpl 객체를 생성하며, 이 때 MemoryMemberRepository 객체를 생성자를 통해 주입합니다. // 이는 의존성 주입의 한 예로, MemberServiceImpl이 MemoryMemberRepository에 의존하지만, 직접 생성하.. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 스프링 핵심 원리 이해2 - 객체 지향 원리 적용]새로운 할인 정책 개발 https://agilemanifesto.org/iso/ko/manifesto.html 애자일 소프트웨어 개발 선언애자일 소프트웨어 개발 선언 우리는 소프트웨어를 개발하고, 또 다른 사람의 개발을 도와주면서 소프트웨어 개발의 더 나은 방법들을 찾아가고 있다. 이 작업을 통해 우리는 다음을 가치 있게agilemanifesto.org// RateDiscountPolicy 클래스 선언public class RateDiscountPolicy implements DiscountPolicy { // 할인율을 나타내는 변수 선언 및 초기화 private int discountPercent = 10; // DiscountPolicy 인터페이스의 discount 메서드 구현 @Override .. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 객체 지향 설계와 스프링] SOLID SOLID 원칙은 객체 지향 설계를 위한 다섯 가지 기본 원칙으로, 소프트웨어 설계의 품질을 향상시키고 유지보수를 용이하게 하며 확장성을 높이는 데 목적이 있습니다. 각 원칙은 소프트웨어 아키텍처의 결함을 줄이고, 유연성과 재사용성을 증가시키기 위해 고안되었습니다. 다음은 SOLID 원칙의 각 요소를 설명합니다:1. Single Responsibility Principle (단일 책임 원칙)하나의 클래스는 하나의 책임만 가져야 합니다. 즉, 클래스를 변경하는 이유는 오직 하나여야 합니다. 이 원칙을 적용하면 클래스가 변경되는 이유를 명확히 알 수 있으며, 시스템의 다른 부분에 영향을 미치지 않고 독립적으로 클래스를 개선하거나 수정할 수 있습니다.2. Open/Closed Principle (개방-폐쇄 원.. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 객체 지향 설계와 스프링] 다형성 스프링 프레임워크에서 다형성(Polymorphism)은 객체 지향 프로그래밍의 핵심 개념 중 하나로, 스프링에서 특히 유용하게 사용됩니다. 다형성을 통해 여러 클래스의 객체들이 하나의 인터페이스나 기본 클래스의 참조 타입으로 다루어질 수 있습니다. 이를 활용하면 유연하고 확장성 있는 애플리케이션을 구축할 수 있습니다.스프링에서의 다형성의 예인터페이스를 통한 다형성: 스프링에서는 다양한 컴포넌트나 서비스를 인터페이스로 정의하고, 이 인터페이스를 구현하는 다양한 클래스를 생성할 수 있습니다. 예를 들어, 데이터 접근 객체(Data Access Object, DAO) 인터페이스가 있고, 이를 여러 DB 기술(MySQL, PostgreSQL 등)을 사용해 구현할 수 있습니다.빈(Bean) 설정과 다형성: 스프링.. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 객체 지향 설계와 스프링] 스프링 스프링 프레임워크는 자바 플랫폼을 위한 강력하고 광범위하게 사용되는 개발 프레임워크입니다. 이는 엔터프라이즈급 응용 프로그램을 구축하는 데 필요한 광범위한 프로그래밍 및 구성 모델을 제공합니다. 여기에는 몇 가지 핵심 기술이 포함되어 있습니다:IoC(Inversion of Control) 컨테이너: 스프링의 핵심을 이루는 기능 중 하나는 제어의 역전이라는 개념입니다. 이는 객체의 생성과 객체 간의 의존성 연결 같은 제어권이 사용자 코드에서 프레임워크로 넘어갔음을 의미합니다. 스프링 컨테이너는 ApplicationContext 인터페이스를 통해 애플리케이션 컴포넌트의 생명주기와 구성을 관리합니다.AOP(Aspect-Oriented Programming): 스프링은 관점 지향 프로그래밍을 지원하여 공통의 문.. 더보기
[스프링| 스프링 입문 | 코드로 배우는 스프링] 회원 웹 기능 - 조회 // @GetMapping 애노테이션은 이 메서드가 HTTP GET 요청을 처리하며,// 'members' 경로로 들어오는 요청을 매핑합니다.@GetMapping("members")public String list(Model model) { // 'list' 메서드 정의, Model 객체를 파라미터로 받습니다. // Model 객체는 뷰에 데이터를 전달하는 데 사용됩니다. // memberService를 사용하여 모든 회원 목록을 조회합니다. List members = memberService.findMembers(); // 조회한 회원 목록을 'members'라는 이름으로 Model에 추가합니다. // 이렇게.. 더보기
[스프링| 스프링 입문 | 코드로 배우는 스프링] 회원 웹 기능 - 등록, DTO와 DAO // 회원 가입을 처리하는 메서드입니다.public Long join(Member member) { // 중복 회원이 있는지 검증하는 private 메서드를 호출합니다. validateDuplicateMember(member); //중복 회원 검증 // 리포지토리의 save 메서드를 사용하여 회원 정보를 저장합니다. memberRepository.save(member); // 저장된 회원의 ID를 반환합니다. 저장 후에는 ID가 할당됩니다. return member.getId();}// 중복 회원을 검증하는 메서드입니다. 이 메서드는 private으로 선언되어,// 클래스 내부에서만 사용할 수 있습니다.private void validateDuplicateM.. 더보기