본문 바로가기

코딩독학

[스프링| 스프링 핵심 원리 | 기본편 | 객체 지향 설계와 스프링] 스프링 스프링 프레임워크는 자바 플랫폼을 위한 강력하고 광범위하게 사용되는 개발 프레임워크입니다. 이는 엔터프라이즈급 응용 프로그램을 구축하는 데 필요한 광범위한 프로그래밍 및 구성 모델을 제공합니다. 여기에는 몇 가지 핵심 기술이 포함되어 있습니다:IoC(Inversion of Control) 컨테이너: 스프링의 핵심을 이루는 기능 중 하나는 제어의 역전이라는 개념입니다. 이는 객체의 생성과 객체 간의 의존성 연결 같은 제어권이 사용자 코드에서 프레임워크로 넘어갔음을 의미합니다. 스프링 컨테이너는 ApplicationContext 인터페이스를 통해 애플리케이션 컴포넌트의 생명주기와 구성을 관리합니다.AOP(Aspect-Oriented Programming): 스프링은 관점 지향 프로그래밍을 지원하여 공통의 문.. 더보기
[스프링| 스프링 입문 | 코드로 배우는 스프링] 스프링 데이터 JPA package hello.hellospring.repository;import hello.hellospring.domain.Member;import org.springframework.data.jpa.repository.JpaRepository;import java.util.Optional;public interface SpringDataJpaMemberRepository extends JpaRepository, MemberRepository{ @Override Optional findByName(String name);} package hello.hellospring;import hello.hellospring.repository.MemberRepository;import hello.hell.. 더보기
[스프링| 스프링 입문 | 코드로 배우는 스프링] 회원 웹 기능 - 등록, DTO와 DAO // 회원 가입을 처리하는 메서드입니다.public Long join(Member member) { // 중복 회원이 있는지 검증하는 private 메서드를 호출합니다. validateDuplicateMember(member); //중복 회원 검증 // 리포지토리의 save 메서드를 사용하여 회원 정보를 저장합니다. memberRepository.save(member); // 저장된 회원의 ID를 반환합니다. 저장 후에는 ID가 할당됩니다. return member.getId();}// 중복 회원을 검증하는 메서드입니다. 이 메서드는 private으로 선언되어,// 클래스 내부에서만 사용할 수 있습니다.private void validateDuplicateM.. 더보기
[스프링| 스프링 입문 | 코드로 배우는 스프링] 컴포넌트 스캔과 자동 의존관계 설정 @Controller기능: @Controller 애노테이션은 해당 클래스가 웹 요청을 처리하는 컨트롤러임을 나타냅니다. 스프링 MVC에서 모델, 뷰, 컨트롤러(MVC) 패턴의 컨트롤러 역할을 합니다. 이 애노테이션이 붙은 클래스는 웹 요청과 응답을 처리하는 메서드를 포함하며, 스프링이 이를 컴포넌트로 인식하여 웹 요청을 처리할 수 있도록 관리합니다.@Service기능: @Service 애노테이션은 해당 클래스가 비즈니스 로직을 처리하는 서비스 계층임을 나타냅니다. 이 계층은 주로 비즈니스 요구사항을 구현하며, 데이터 접근 계층과 컨트롤러 계층 사이에서 중개자 역할을 합니다. 스프링 컨테이너는 이 애노테이션을 사용하여 비즈니스 로직 처리를 위한 서비스 컴포넌트를 관리합니다.@Repository기능: @Re.. 더보기
[스프링| 스프링 입문 | 코드로 배우는 스프링] 회원 리포지토리 테스트 케이스 작성 package hello.hellospring.repository; import hello.hellospring.domain.Member; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; class MemoryMemberRepositoryTest { MemoryMemberRepository repository = new MemoryMemberRepository(); // 테스트할 메모리 기반의 리포지토리 객체 생성 @AfterEach public void afterEach() .. 더보기
[스프링| 스프링 입문 | 코드로 배우는 스프링] 비즈니스 요구사항 정리 Service 계층에서 구현하는 메서드들은 Repository 계층의 메서드와는 다른 역할과 책임을 가지고 있습니다. 일반적으로, Repository 계층은 데이터의 저장과 조회와 같은 데이터 접근을 직접적으로 다루는 반면, Service 계층은 비즈니스 로직의 실행을 책임집니다. 이를 통해 애플리케이션의 비즈니스 요구사항을 충족시키고, 데이터를 가공하거나 복잡한 연산을 수행합니다. Service 계층의 주요 역할은 다음과 같습니다: 비즈니스 로직 구현: 데이터가 어떻게 처리되어야 하는지, 어떤 순서로 비즈니스 규칙을 적용해야 하는지를 정의하고 구현합니다. 예를 들어, 사용자 등록 시 유효성 검사, 중복 검사, 권한 부여 등의 추가 로직을 구현할 수 있습니다. 트랜잭션 관리: 여러 데이터 변경이 한 작업.. 더보기
[스프링| 스프링 입문 | 코드로 배우는 스프링] API // @GetMapping 애노테이션은 이 메서드가 GET 요청을 처리하도록 지정합니다. URL 경로는 "hello-api"입니다. @GetMapping("hello-api") // @ResponseBody 애노테이션은 메서드에서 반환하는 객체를 HTTP 응답 본문으로 직접 쓰도록 지시합니다. @ResponseBody // helloApi 메서드 정의: 클라이언트로부터 "name" 파라미터를 받아서 처리합니다. public Hello helloApi(@RequestParam("name") String name) { // Hello 클래스의 인스턴스를 생성합니다. Hello hello = new Hello(); // 입력 받은 이름을 Hello 객체의 name 필드에 설정합니다. hello.setName(.. 더보기
[백준| 단계별로 풀어보기 5단계 문자열 | Python] 2908번 상수 1. 문제 목적 백준 2908번 '상수' 문제는 주어진 두 숫자를 거꾸로 읽고, 그 중 더 큰 숫자를 출력하는 문제입니다. 이 문제의 목적은 문자열 조작과 기본적인 숫자 처리를 연습하여, 문자열을 다루는 기술과 숫자 비교 방법을 강화하는 데 있습니다. 2. 핵심 개념 핵심 메서드 및 개념: 문자열 슬라이싱 [::-1]: 문자열을 거꾸로 뒤집기 위해 사용되는 파이썬의 슬라이싱 기법입니다. 이는 문자열의 시작부터 끝까지 역순으로 접근하도록 합니다. max() 함수: 여러 값 중 최대값을 반환하는 내장 함수로, 두 개 이상의 숫자 중에서 가장 큰 값을 찾는데 사용됩니다. 3. 문제 해결 절차 입력 받기: 두 개의 숫자를 문자열로 입력받습니다. 숫자 뒤집기: 입력받은 각 숫자를 문자열로 취급하여 거꾸로 뒤집습니.. 더보기