프레임워크 31

[Spring] 스프링 부트 정리 (우아한 스프링 부트 - 백기선)

https://www.youtube.com/watch?v=z0EaPjF3pCQ&list=WL&index=1 "스프링 부트"가 다루는 영역 1. 빌드 1-1. 프로젝트 생성 1-2. 의존성 관리 1-3. 애플리케이션 패키징 및 실행 2. 코딩 2-1. 개발 툴 제공 2-2. 자동 설정 2-3. 외부 설정 3. 배포 및 관리 3-1. 도커 이미지 생성 3-2. Actuator 3-3. 스프링 부트 어드민 1. 빌드 1-1. 프로젝트 생성 Spring initializr 프로젝트는 특정한 디렉토리 구조를 가지며, 이를 자동으로 생성 Maven / Gradle 선택 Java / Kotiln / Groovy 선택 의존성 자동 추가 패키징 방법 (JAR / WAR) 선택 자바 버전 선택 1-2. 의존성 관리 프로젝..

[Spring] Rest API 서버 만들기 1 - 문서화, 구조, Exception, Security

https://daddyprogrammer.org/post/series/springboot2-make-rest-api/ SpringBoot2로 Rest api 만들기 - 강좌모음 SpringBoot2로 Rest api 만들기 - 강좌모음 daddyprogrammer.org 1. Intellij Community 프로젝트 생성 2. HelloWorld 3. H2 Database 연동 4. Swagger API 문서 자동화 5. API 인터페이스 및 결과 데이터 구조 설계 6. ControllerAdvice를 이용한 Exception 처리 7. MessageSource를 이용한 Exception 처리 8. SpringSecurity를 이용한 인증 및 권한 부여 1. Intellij Community 프로젝트..

[Spring] Actuator

정의 [정의] 애플리케이션의 상태에 대한 종합적인 모니터링 제공 Spring Boot Actuator는 모든 활성화된 endpoint를 HTTP를 통해 노출되도록 자동 설정 기능 앱 모니터링 매트릭 수집 트래픽 이해 데이터베이스 상태 Dependency dependencies { implementation 'org.springframework.boot:spring-boot-starter-actuator' } 노출 정보 추가 management.endpoints.jmx.exposure.include=* management.endpoints.web.exposure.include=* Usage http://localhost:8080/actuator /actuator 이후에 beans, caches, healt..

[Spring] Spring AOP (Aspect-Oriented Programming)

정의 AOP는 핵심 관심사(core concerns)에서 공통 관심사(cross-cutting concerns)를 분리시키는 프로그래밍 기법으로, 공통 관심사를 추상화하고 캡슐화합니다. 공통 관심사 (Cross-cutting concerns) 공통 관심사는 로깅, 검증, 트랜잭션, 시간측정과 같이, 서로 다른 메서드들에 공통적으로 반복되고, 모듈 자체에서 완전한 리팩토링할 수 없는 코드를 의미합니다. AOP 주요 개념 Aspect - 모듈화한 공통 관심사 Join point - 프로그램 실행 중 한 시점, Spring AOP에서는 메서드 실행 pointcut - join point을 식별 Advice - pointcut에 의해 선택된 join point에 실행할 코드, cross-cutting conce..

[Spring] @Transactional과 propagation

1. 상황 프로젝트 도중 @Transactional을 선언했음에도 불구하고, 해당 메서드가 실행 도중 exception이 발생하였을 때 rollback이 일어나지 않는 문제가 발생하였습니다. 이를 계기로, @Transactional에 사용법에 대해 학습한 내용을 정리하려 합니다. 아래 링크는 해당 이슈에 대한 github 링크입니다. https://github.com/pythaac/mamacoco/issues/4 [Database] TistorySyncExecuter에서 Transaction Rollback 오작동 · Issue #4 · pythaac/mamacoco Description [Code] TistorySyncExecuter의 각 메서드 [Task] @transactional 메서드에서 Exc..

[React Native] 생명주기와 useEffect()

Mounting 가장 처음 실행되는 단계 constructor에서 모든 것이 이루어지며, state와 prop, component 등을 준비시킴 rendering constructor에서는 http request와 같은 side effect를 실행시키지 말 것 총 4가지 메서드 constructor() static getDerivedStateFromProps() render() componentDidMount() Updating state나 prop이 바뀌어 re-rendering이 필요할 때 총 5가지 메서드 static getDerivedStateFromProps() shouldComponentUpdate() render() getSnapshotBeforeUpdate() componentDidUpda..

[인프런][스프링 입문] 25~27 강

AOP가 필요한 상황 AOP 적용 다음으로 * 시나리오 - [목표] 모든 메서드의 호출 시간을 측정하고 싶음 - [방안] 각 메서드마다 시간 측정 로직을 추가함 - [참고] 이 때 exception이 발생해도 실행되어야 하기 때문에 finally에 작성 - [문제1] 시간 측정 코드는 핵심 비즈니스 로직이 아니고 공통 관심 사항이므로, 핵심 관심 사항과 공통 관심 사항이 섞여 유지보수가 어려워짐 - [문제2] 시간 측정 로직은 별도 공통 로직으로 만들기 어려움 - [문제3] 시간 측정 로직을 변경하기 어려움 * 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항 (core concern) * AOP (Aspect Oriented Programming) - 공통 관심 사항과 핵심..

[인프런][스프링 입문] 21~24강

스프링 통합 테스트 스프링 JdbcTemplate JPA 스프링 데이터 JPA * Spring boot 테스트 작성법 - [애노테이션] @SpringBootTest, @Transactional 애노테이션이 추가되어야 함 - [참고] 테스트에서 정도는 필드 @Autowired를 사용해도 된다 (편하다) * @SpringBootTest - 스프링 컨테이너와 테스트를 함께 실행 - 진짜 스프링을 띄워서 테스트를 함 * @Transactional - DB 연동 테스트시 테스트 전 상태로 rollback해줌 - afterEach가 필요 없음! - [이유] 트랜잭션을 commit하기 전에 rollback해버림 * 단위 테스트는 필요 없는가? - 스프링 컨테이너를 실행하는 테스트를 통합 테스트라고 함 - 통합 테스트..

[인프런][스프링 입문] 17~20 강

회원 웹 기능 - 등록 회원 웹 기능 - 조회 H2 데이터베이스 설치 순수 JDBC https://github.com/pythaac/Spring_tutorial/tree/main/%EC%8A%A4%ED%94%84%EB%A7%81%20%EC%9E%85%EB%AC%B8%20-%20%EC%BD%94%EB%93%9C%EB%A1%9C%20%EB%B0%B0%EC%9A%B0%EB%8A%94%20%EC%8A%A4%ED%94%84%EB%A7%81%20%EB%B6%80%ED%8A%B8%2C%20%EC%9B%B9%20MVC%2C%20DB%20%EC%A0%91%EA%B7%BC%EA%B8%B0%EC%88%A0 GitHub - pythaac/Spring_tutorial: These are test tutorial codes be..