일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 컨테이너
- JdbcTemplate
- Di
- Spring Boot
- POJO
- Dependency Injection
- Ubunt
- spring aop
- unix
- Framework
- 프로퍼티
- AOP
- pointcut
- java
- spring framework
- @Spring-Test
- 마이바티스
- JDBC TEMPLATE
- 리눅스
- @JUnit
- @test
- myBatis
- STS
- @AspectJ
- Spring JDBC
- spring
- SpringJDBC
- java spring
- XML
- Linux
- Today
- Total
목록Content (307)
개키우는개발자 : )
스프링 개발 환경 셋업 요약1. 스프링 개발 시작첫 단계: 스프링 애플리케이션 개발을 위한 환경 구성.개발에 필요한 도구 및 설정 준비가 중요.2. 강의에서 사용하는 스프링 버전강의 기준: Spring 6.0.12 및 Spring Boot 3.1.4.이후 스프링 버전이 업데이트되더라도 강의 예제와 큰 차이는 없음.예제가 호환되지 않을 경우, 강의에서 사용한 버전과 비슷한 환경 사용 권장.3. 개발 환경 설정주요 도구JDK: Java Development Kit.IDE: IntelliJ IDEA.HTTPie: API 테스트 및 개발용 도구 (선택 사항).JDK 설치 방법옵션 1: IntelliJ 내부 설치IntelliJ의 내장 기능으로 JDK 설치 및 관리 가능.IDE에서 다운로드 메뉴를 통해 원하는 JD..
1. 강의 소개강사: 토비 이일민"토비의 스프링" 저자.스프링 기술 및 원리 이해를 코드 중심으로 설명.2. 강의 목적스프링의 공통 원리 탐구:스프링 프레임워크의 다양한 기술에 적용된 원리를 소개.이를 코드로 구현하여 이해를 돕는 방식.애플리케이션 코드에 응용:배운 스프링 원리를 실제 애플리케이션 코드에 어떻게 적용할지 설명.3. 배경 및 맥락스프링과 책의 역사:2010년: "토비의 스프링" 초판 출간.2011년: "토비의 스프링 3.1" 출간.이후 스프링 4, 5를 거쳐 최신 버전 6.1까지 진화.개정판 미출간 이유:스프링의 핵심 원리는 변하지 않았음.기존 스타일이 여전히 유효하다고 판단.4. 최근 강의 준비의 이유기존 예제의 한계:기존 예제는 구식 스타일로, 현업과 다소 괴리 발생.최신 기술과 맞지 ..
스프링 부트 강의 요약 및 결론1. 스프링 부트의 정의와 목적정의:스프링 부트는 스프링 프레임워크의 확장 도구로, 다양한 기술 환경에서 스프링을 더 쉽게 활용할 수 있도록 지원하는 도구의 모음.목적:번거로운 작업 자동화(예: 서블릿 컨테이너 설정).자동 구성으로 개발 생산성을 극대화.베스트 프랙티스를 바탕으로 기본값 제공 및 설정 옵션 지원.2. 스프링 부트의 주요 기능자동 구성(Auto Configuration):다양한 인프라 빈을 기본값으로 자동 등록.필요 시 프로퍼티 설정 및 커스텀 빈 등록으로 확장 가능.스프링 프레임워크 기반:스프링 부트를 잘 활용하려면 스프링 프레임워크의 기본 개념(예: 빈, 의존성 주입, 생명주기 관리)을 숙지해야 함.구성 정보 작성 방식:XML을 지양하고 Java 기반 구성..
스프링 부트 JDBC 템플릿 자동 구성 분석스프링 부트 JDBC 템플릿 스타터는 데이터 소스와 관련된 자동 구성 요소를 통해 데이터베이스와 상호 작용하는 과정을 단순화합니다. 이번 분석에서는 JDBC 템플릿과 관련된 자동 구성 빈과 그 동작 방식을 살펴봅니다.1. JDBC 템플릿 스타터 추가 효과자동 구성 빈 증가:JDBC 스타터 추가 전: 기본 13개.JDBC 스타터 추가 후: 약 32개.약 19개의 자동 구성 빈이 추가됨.2. 주요 자동 구성 클래스1) PersistenceExceptionTranslationAutoConfiguration역할:데이터 접근 예외를 추상화하여 예외 번역 기능을 제공.조건:spring.dao.exceptionTranslation.enabled 프로퍼티가 true이거나 설정..
스프링 부트 웹 모듈의 자동 구성 분석스프링 부트의 웹 모듈(Spring Web)을 추가하면, 기본적인 웹 애플리케이션을 구현하기 위해 필요한 다양한 빈과 설정이 자동으로 구성됩니다. 이 과정에서는 웹 애플리케이션의 구성과 작동 방식에 필요한 주요 자동 구성 요소를 살펴봅니다.1. 자동 구성 추가로 인한 변화자동 구성 빈 개수 증가:웹 모듈 추가 전: 약 13개 (JMX 제외).웹 모듈 추가 후: 약 62개.약 50개의 자동 구성 빈이 추가됨.2. 주요 자동 구성 클래스1) HTTP 메시지 컨버터 (HttpMessageConvertersAutoConfiguration)역할:JSON, XML, Text 등 다양한 형식의 데이터를 HTTP 요청과 응답의 본문으로 변환.주요 컨버터:StringHttpMessa..
스프링 부트 코어 자동 구성 분석스프링 부트의 코어 자동 구성은 다양한 애플리케이션의 기본 동작을 지원하며, 기본적으로 설정된 값과 조건에 따라 빈이 등록됩니다. 이번에는 스프링 부트 코어 모듈의 주요 자동 구성 항목을 살펴보겠습니다.1. AOP Auto Configuration조건: spring.aop.auto 프로퍼티가 true이거나 설정되지 않았을 때(matchIfMissing=true).동작 원리:AOP 관련 빈을 등록하여 스프링의 AOP 기능을 활성화합니다.AspectJ 라이브러리가 없을 경우 클래스 기반의 프록시 방식으로 기본 설정.특징:matchIfMissing으로 인해 기본적으로 활성화.spring.aop.auto=false를 설정하여 비활성화 가능.빈 등록 결과:AOP 관련 빈 팩토리 포..
스프링 부트 자동 구성 활용 방법스프링 부트의 자동 구성은 개발자가 최소한의 설정만으로 애플리케이션을 빠르게 구성하고 실행할 수 있도록 돕는 핵심적인 기능입니다. 이 과정에서 자동으로 생성되는 빈과 설정이 무엇인지 확인하고, 이를 효과적으로 활용하는 방법을 소개합니다.1. 자동 구성 상태 확인1.1 로그 기반 확인디버그 옵션 활성화: JVM 아규먼트에 -Ddebug를 추가하거나, 스프링 부트 설정 파일(application.properties)에 debug=true를 추가하면, 자동 구성과 관련된 상세 로그를 확인할 수 있습니다.매칭된 자동 구성 클래스와 조건을 통과하지 못한 이유까지 보여줍니다.로그 해석:Condition Evaluation Report: 자동 구성 조건을 평가한 결과를 보여줍니다.Po..
스프링 부트 자동 구성 확인 및 활용 방법스프링 부트는 자동 구성 기능을 통해 개발자가 최소한의 설정으로 필요한 빈을 사용할 수 있도록 도와줍니다. 이번 강의에서는 자동 구성의 적용 상태 확인과 활용 전략을 다루며, 이를 통해 개발자가 스프링 부트를 효과적으로 탐구하고 사용할 수 있도록 돕습니다.1. 자동 구성 상태 확인(1) 로그를 통해 확인하기스프링 부트 실행 시 JVM 또는 프로그램 아규먼트로 debug 옵션 추가:JVM 아규먼트: -Ddebug프로그램 아규먼트: --debug로그에 자동 구성 후보와 선택된 구성, 제외된 구성의 이유를 출력.등록된 빈: 조건을 만족한 이유 제공.제외된 빈: 클래스가 없거나 프로퍼티 설정이 없어서 제외된 이유 표시.한계점: 출력되는 정보가 방대해 이해와 분석이 어려울..
요약 및 핵심 개념이 강의는 스프링 부트를 제대로 활용하기 위해 자동 구성과 관련된 동작 원리를 이해하는 과정을 다룹니다. 스프링 부트의 자동 구성 빈, 기술 선택, 설정 방식을 탐구하며, 개발자가 어떻게 이 기능을 활용하고 확장할 수 있는지에 대해 논의합니다.핵심 내용1. 스프링 부트를 시작하는 첫 단계: 기술 선택기술 스택 결정:사용할 언어: Java 또는 Kotlin.웹 기술: Servlet 기반 vs. Reactive 기반.데이터 액세스 방식: SQL 또는 NoSQL.보안, 캐싱, 클라우드 통합 등도 고려.관련 선택지들이 수십 가지에 달함.Spring Initializer:Spring Initializer를 사용해 프로젝트 템플릿 생성.Gradle 또는 Maven 설정 파일(build.gradle..
요약 및 핵심 개념이 문서는 직접 작성했던 스프링 부트 코드와 스프링 부트의 자동 구성 기능이 실제로 동일하게 동작하는지 검증하는 과정을 설명합니다. 또한, 스프링 부트의 테스트 프레임워크를 활용해 자동 구성 및 테스트 코드를 간소화하고, 자동 구성의 원리를 이해하는 데 중점을 둡니다.핵심 내용1. 직접 작성한 코드와 스프링 부트 자동 구성 비교자동 구성 코드 삭제:이전에 작성한 모든 수동 구성 코드(데이터 소스, JDBC 템플릿, 서블릿 컨테이너 등)를 삭제.스프링 부트의 기본 자동 구성을 통해 동일한 기능을 구현 가능 여부 확인.스프링 부트의 동작 방식 확인:@SpringBootApplication에 포함된 @EnableAutoConfiguration 및 @ComponentScan 애노테이션을 통해 ..
요약 및 핵심 개념이 문서는 이전에 작성한 Hello Repository를 활용하여 Hello Service를 구현하고, 서비스 기능을 검증하는 테스트를 작성하는 과정을 다룹니다. 또한, 서비스 계층에서 API 레벨까지 확장하여 데이터베이스 액세스 기능과 자동 구성된 스프링 부트의 동작을 확인합니다.핵심 내용1. Hello Service 구현기능 추가:HelloRepository를 주입받아 인사를 기록하는 기능(increaseCount)을 추가.관리자가 이름별로 몇 번 인사했는지 확인할 수 있도록 설계.의존성 주입:HelloRepository를 생성자를 통해 주입.서비스 클래스가 리포지토리에 의존하는 구조를 설계.2. 테스트 설계 및 개선단위 테스트:단순한 단위 테스트로 HelloService의 기본 동..
요약 및 핵심 개념이 문서는 JDBC 템플릿을 이용해 Hello 데이터를 액세스 및 관리하는 Repository를 설계하고, 이를 구현 및 테스트하는 과정을 다룹니다. 또한 인터페이스의 디폴트 메소드를 활용하여 재사용 가능한 로직을 설계하고, 테스트를 통해 동작을 검증합니다.핵심 내용1. Repository 설계 및 구현Repository 개념:데이터 액세스 계층을 담당하며, 테이블 정보를 조회, 삽입, 업데이트 등의 작업을 처리.HelloRepository라는 인터페이스 설계, JDBC 템플릿 기반 구현체 작성.HelloRepository 인터페이스:findHello(String name): 이름으로 데이터를 검색.increaseCount(String name): 이름의 카운트를 1 증가.countOf..
요약 및 핵심 개념이 문서는 JDBC 템플릿과 JDBC 트랜잭션 매니저를 자동 구성하고, 테스트 환경에서 이를 활용하여 데이터베이스 작업을 수행하는 방법을 설명합니다. 특히, 트랜잭션 관리를 통해 테스트 간 데이터 간섭을 방지하고, 효율적인 DB 초기화와 SQL 실행 방식을 다룹니다.핵심 내용1. JDBC 템플릿 및 트랜잭션 매니저 자동 구성JDBC 템플릿:SQL 작업을 간소화하기 위한 스프링 제공 템플릿 클래스.데이터 소스(DataSource)를 기반으로 작동하며, 조건부 애노테이션을 활용해 등록.@ConditionalOnSingleCandidate를 사용하여 데이터 소스 빈이 하나만 존재할 경우만 템플릿 생성.JDBC 트랜잭션 매니저:트랜잭션의 시작과 종료를 관리하며, 선언적 트랜잭션(@Transac..
요약 및 핵심 개념스프링 부트 환경에서 DataSource 자동 구성 클래스를 설계 및 구현하는 과정을 다루었습니다. 특히 조건부 빈 등록, SimpleDriverDataSource와 HikariCP와 같은 데이터 소스의 활용, 외부 설정을 통한 프로퍼티 관리, 그리고 테스트 기반 데이터 소스 검증 방법을 설명했습니다.핵심 내용1. DataSourceConfig 클래스 설계자동 구성 클래스 정의:@MyAutoConfiguration 애노테이션을 통해 자동 구성 클래스 선언.조건부 애노테이션 @ConditionalMyOnClass를 사용하여 특정 클래스(JdbcOperations)가 로딩된 경우에만 빈 생성.2. SimpleDriverDataSource 빈 등록특징:스프링에서 제공하는 기본 데이터 소스 구..
요약 및 핵심 개념스프링 JDBC 기술을 활용하여 자동 구성 클래스를 설계하고 데이터 소스, JDBC 템플릿, 트랜잭션 매니저 등을 효과적으로 구성하는 방법을 다뤘습니다. 이 과정에서 JDBC 템플릿의 동작 원리, 조건부 애노테이션을 활용한 유연한 구성, 인메모리 데이터베이스(H2)를 이용한 간단한 테스트 환경 설정 방법을 포함합니다.핵심 내용1. 자동 구성 클래스 설계JDBC 기술 기반의 자동 구성을 위해 DataSourceConfig 클래스를 설계.특정 조건에서만 빈을 생성하기 위해 조건부 애노테이션(@Conditional)을 사용.스프링의 JdbcOperations 인터페이스를 기반으로 구성 확인 후 관련 빈 등록.2. DataSource 빈 구성SimpleDriverDataSource:기본 JDB..
요약 및 핵심 개념서버 프로퍼티 설정을 관리하는 방법과 이를 빈으로 등록하는 과정을 설명했습니다. 특히, 자동 구성 클래스에 조건부 애노테이션을 사용하고, 빈 후처리기(Post Processor)를 통해 프로퍼티 바인딩을 보다 효율적으로 처리하는 방법을 다뤘습니다.핵심 내용프로퍼티 클래스를 빈으로 등록:서버 설정에 필요한 프로퍼티를 별도의 클래스로 분리하고, 이를 빈으로 등록하여 톰캣이나 다른 서버 설정 시 쉽게 재사용할 수 있도록 합니다.하지만 설정 클래스가 많아질 수 있으며, 서블릿 컨테이너(Tomcat, Jetty, Undertow)별로 다른 설정을 적용해야 한다는 문제점이 발생합니다.자동 구성 클래스의 조건부 애노테이션:특정 상황에서만 프로퍼티 빈을 생성하기 위해 @Conditional 애노테이션..
요약 및 핵심 개념 프로퍼티 값을 클래스로 분리하고, 이를 빈으로 등록하여 여러 곳에서 재사용할 수 있는 방식을 설명했습니다. 또한, 스프링 부트에서 프로퍼티를 관리하는 Binder 유틸리티를 활용하여 프로퍼티 파일의 값을 자동으로 바인딩하는 방법도 다루었습니다.핵심 내용프로퍼티 클래스로 분리:프로퍼티 값들을 별도의 클래스로 분리하여 관리하면, 중복된 코드를 줄이고 재사용할 수 있습니다.예를 들어, ServerProperties 클래스를 만들어 서버 설정에 필요한 프로퍼티들을 이 클래스로 관리하고, 이 빈을 생성하여 여러 곳에서 재사용할 수 있습니다.프로퍼티 기본값 설정:@Value 애노테이션에서 기본값을 설정하려면, 플레이스홀더 뒤에 콜론(:)을 붙이고 기본값을 지정할 수 있습니다.이 방식으로 프로퍼티..
요약 및 핵심 개념스프링의 @Value 애노테이션을 활용하여 프로퍼티 값을 필드에 주입하는 방법을 살펴보았습니다. 또한, 프로퍼티를 자동으로 치환해주는 스프링의 후처리기(PropertySourcesPlaceholderConfigurer)에 대해 다루고, 자동으로 프로퍼티 값을 주입받을 수 있도록 설정하는 방법을 소개했습니다.핵심 내용@Value 애노테이션을 통한 프로퍼티 주입:@Value("${property.name}") 방식으로 프로퍼티 값을 필드에 주입할 수 있습니다.이 방식은 Environment로 매번 프로퍼티를 읽어오는 코드보다 선언적이고 간결하며, 필드에 직접 프로퍼티 값을 주입할 수 있습니다.프로퍼티 치환 후처리기 (PropertySourcesPlaceholderConfigurer):@Va..
요약 및 핵심 개념스프링의 Environment 추상화를 활용하여 외부 프로퍼티 설정과 우선순위 처리 방식을 테스트하는 방법을 소개했습니다. 이를 통해 스프링 부트 애플리케이션의 초기화 후 작업 실행 방법과 프로퍼티 관리의 우선순위 처리에 대해 이해할 수 있습니다.핵심 내용스프링의 Environment를 통한 프로퍼티 읽기:Environment 추상화는 다양한 소스에서 프로퍼티 값을 읽어오는 메커니즘을 제공합니다.프로퍼티 소스는 application.properties, 환경 변수, 시스템 프로퍼티 등이 있으며, 이를 활용해 프로퍼티 값을 쉽게 설정하고 수정할 수 있습니다.우선순위 적용:우선순위는 시스템 프로퍼티 > 환경 변수 > application.properties 순으로 적용됩니다. 각 소스에서 ..
요약 및 핵심 개념스프링 부트의 외부 설정과 이를 활용한 자동 구성에 대해 다루었습니다. 외부 설정은 자동 구성된 빈의 기본값을 커스터마이즈하는 데 사용되며, 이를 통해 애플리케이션의 유연성과 재사용성을 높일 수 있습니다.핵심 내용자동 구성과 외부 설정:스프링 부트는 자동으로 150개 이상의 구성 클래스를 제공하며, 기본적으로 제공되는 값들을 쉽게 수정할 수 있도록 외부 설정을 활용합니다.예를 들어, Tomcat의 기본 포트는 8080이지만, 외부 설정을 통해 포트를 9090으로 변경할 수 있습니다.외부 설정과 프로퍼티 변경:Spring의 Environment 추상화는 프로퍼티를 읽어오는 메커니즘을 제공합니다. 이를 통해 외부 설정 파일에서 지정된 값들을 읽어 자동 구성된 빈의 기본값을 변경할 수 있습니..
요약 및 핵심 개념스프링 부트의 조건부 자동 구성의 확장 애노테이션에 대해 다루었습니다. 조건부 애노테이션은 자동 구성에서 빈 등록 여부를 제어하기 위해 사용되며, 다양한 조건을 기반으로 빈의 존재, 클래스의 포함 여부, 프로퍼티 값 등을 검사할 수 있습니다.핵심 내용조건부 애노테이션의 역할과 역사:@Conditional 애노테이션은 스프링 프레임워크의 기본 기능으로, 빈을 조건에 따라 등록할지 결정합니다. 스프링 4.0부터 도입되었으며, 스프링 부트에서 더 다양한 조건부 애노테이션이 확장되었습니다.예를 들어, @Profile 애노테이션은 특정 환경(개발, 테스트, 운영)에 따라 빈 구성을 다르게 할 수 있게 해줍니다.주요 조건부 애노테이션:@ConditionalOnClass와 @ConditionalOn..
요약 및 핵심 개념스프링 부트의 자동 구성(Autoconfiguration)을 직접 정의하고 기존의 자동 구성을 대체하는 방법을 설명했습니다. 이를 통해 특정 기술과 관련된 커스텀 인프라스트럭처 빈을 등록하고, 이를 활용하여 기본 제공되는 구성 정보 대신 사용자 정의 빈을 우선 적용할 수 있는 방법을 배웠습니다.핵심 내용자동 구성의 원리:스프링 부트는 EnableAutoConfiguration과 ImportSelector를 통해 자동 구성 클래스를 로딩하고, 각 클래스에 있는 @Conditional 애노테이션을 사용하여 빈 등록 여부를 결정합니다.사용자는 ConditionalOnClass, ConditionalOnMissingBean과 같은 조건부 애노테이션을 통해 자동 구성 정보의 적용 여부를 세밀하게..
요약 및 핵심 개념@Conditional 애노테이션을 사용하여 조건에 따라 Tomcat과 Jetty 웹 서버 중 하나를 선택하는 방법을 다루었습니다. 기존의 학습 테스트에서 구현한 조건부 로직을 실제 자동 구성 시나리오에 적용하여, 특정 라이브러리가 프로젝트에 포함되어 있는지 여부에 따라 자동으로 웹 서버를 선택하는 방법을 배웠습니다.핵심 내용Tomcat과 Jetty 선택 기준:프로젝트에 특정 라이브러리(Tomcat 또는 Jetty)가 포함되어 있는지를 기준으로 웹 서버를 선택합니다.스프링의 ClassUtils.isPresent 유틸리티 메소드를 사용해 해당 클래스가 존재하는지 확인하여 true 또는 false를 반환하는 방식으로 구현했습니다.조건부 애노테이션의 활용:@Conditional 애노테이션을 ..
요약 및 핵심 개념스프링 부트의 @Conditional 애노테이션을 테스트하는 방법과, 조건부 로직을 활용한 빈 등록 제어에 대해 학습했습니다. 학습 테스트를 통해 조건부 자동 구성의 동작 방식과 활용 방법을 이해하는 것이 목표입니다.핵심 내용학습 테스트 구성:@Conditional 애노테이션을 테스트하기 위해 조건이 true와 false인 경우의 빈 등록 여부를 확인하는 테스트를 작성했습니다.ApplicationContextRunner를 활용하여 스프링 애플리케이션 컨텍스트에서의 빈 등록 상태를 손쉽게 테스트할 수 있도록 했습니다.조건부 로직 구현:조건부 클래스 (Condition)의 matches 메소드에서 true나 false를 반환하여, 빈이 등록될지 여부를 결정했습니다.애노테이션 메타 정보를 활..
요약 및 핵심 개념스프링 부트에서 조건부 자동 구성을 다루었습니다. 조건부 자동 구성은 특정 조건에 따라 Configuration 클래스나 Bean을 등록할지 말지 결정하는 기능으로, 이를 통해 애플리케이션의 불필요한 자원 사용을 줄이고 성능을 최적화할 수 있습니다.핵심 내용조건부 자동 구성 개념과 적용 방법:@Conditional 애노테이션을 사용해 특정 조건에 따라 Configuration 클래스나 Bean을 등록할지 결정할 수 있습니다.@Conditional 애노테이션의 엘리먼트로 Condition 인터페이스를 구현한 클래스를 지정하고, matches 메소드가 true를 반환하면 해당 Bean이나 Configuration이 등록.서블릿 컨테이너 예제 (Tomcat과 Jetty):Tomcat과 Jet..