- @Value 어노테이션imaginaringapplication.properties / yml 에 정의된 속성값을 클래스 필드에 주입하는 방식 예시@Value("${com.example.articleapp.upload.path}")private String uploadPath;// propertiescom.example.articleapp.upload.path=/path/to/upload// ymlcom: example: articleapp: upload: path: /path/to/upload Spring Context가 초기화될 떄, @Value 어노테이션을 통해 설정 파일에 정의된 값이 uploadPath에 주입된다 예를들어,com.example.articleapp.upload.path가 /path/to/uplo..
- 2025-01-02 19:04:42
- WebFluximaginaring스프링 5에서 도입된 비동기, 논블로킹 웹 프레임워크전통적인 스프링 MVC가 동기식 WebFlux는 Reactive Streams 기반의 비동기 방식 특징논블로킹 - 스레드가 작업이 완료될 때까지 기다리지 않고 다른 작업 처리 가능, 효율적인 리소스 사용Reactive Streams 기반 - Publisher와 Subscriber 패턴을 통해 데이터 스트림 처리 (Flux, Mono와 같은 Reactor 라이브러리 활용)서버지원 - Netty, Undertow 와 같은 논블로킹 서버와 호환 (기존의 Servlet 컨테이너, 톰캣에서도 동작 가능)데이터 흐름 중심 - 데이터가 준비될 때 처리하는 데이터 스트림 기반 프로그래밍 지원 구조애노테이션 기반 - 스프링 MVC와 유사한 방식으로 컨트롤러 작성@Re..
- 2024-12-26 19:41:25
- 레이어드 아키텍처imaginaring어플리케이션을 계층으로 나누어 각 계층의 역활을 명확히 정의하는 설계 방식 일반적으로 3계층 혹은 4계층 구성 3계층규칙인접한 계층만 통신한다독립성을 유지하여 다른 계층에 영향을 주지 않음 단점계층 분리로 인해 코드 복잡도 증가각 계층간 호출로 인한 오버헤드 성능저하명확한 설계가 부족하면 계층간 책임이 겹칠 수 있다3계층 레이어 프레젠테이션 레이어사용자 요청을 처리하고 응답 반환컨트롤러와 연관된 로직 포함역활요청 데이터 검증사용자와의 인터페이스 관리스프링 MVC의 컨트롤러에서 구현비즈니스 레이어비즈니스 로직 처리 (어플리케이션의 주요 기능 구현)서비스 클래스에서 구현역활트랜잭션 처리데이터 변환과 검증퍼시스턴스 레이어DB와 직접 상호작용데이터 접근과 저장 기능JPA @Repository 또는 MyBatis..
- 2024-12-26 19:34:27
- HTTP 프로토콜imaginaringHTTP 구조라인: 요청 정보 (/hotel.html?id=229 HTTP/1.1).헤더: 요청/응답 메타데이터.바디: 데이터 (JSON, XML 등).REST API 설계 원칙리소스 기반: URI로 리소스 식별. (URI ex.. /users)HTTP 메서드 사용GET: 데이터 조회.POST: 새로운 데이터 생성.PUT: 데이터 생성 또는 업데이트.PATCH: 데이터 일부 업데이트.DELETE: 데이터 삭제.Stateless: 서버가 클라이언트 상태를 유지하지 않음. JWT나 Redis로 상태 유지 보완.Cacheable: 응답 데이터 캐싱 가능. Cache-Control로 캐싱 여부 지정.Uniform Interface: 리소스와 URI 간의 일관성 유지.HTTP 상태 코드200 OK: 요청 성공.2..
- 2024-12-26 19:22:45
- MyBatis vs JPAimaginaring스프링 애플리케이션에서 데이터베이스 연결을 위해 대표적으로 MyBatis와 JPA를 사용한다.두가지의 차이점을 알아보자 MyBatisSQL 매핑 프레임워크, 데이터베이스와의 직접적인 연동을 지원특징복잡한 조건문, JOIN등 연산과 같은 작업을 명시적으로 작성 가능SQL을 직접 제어, 세밀한 튜닝 가능동적쿼리 지원 - 등을 포함해 동적 쿼리 생성 가능사용이 편하다XML기반으로 SQL과 자바 객체를 매핑쿼리를 명확하게 정의 할 수 있어 이해하기 쉬움저장 프로시저와의 통합 - DB 저장 프로시저를 호출하고 결과를 쉽게 처리할 수 있다단점SQL 작성과 유지보수 부담이 크다객체관계매핑(ORM) 기능이 제한적코드와 SQL의 분리로 코드간 일관성이 떨어질 수 있다예시// Mapper XML ..
- 2024-12-26 19:21:23
- 스프링 MVCimaginaring스프링 프레임워크는 웹 어플리케이션 개발에 필요한 기능들을 모두 담은 spring-webmvc 모듈을 제공하는데,이걸 스프링 웹 프레임워크라고 한다 MVC패턴앱 구조를 크게 세분활 (모델, 뷰, 컨트롤러)하여 각 역활을 수행하도록 패턴으로 만든 것구성요소DispatcherServlet : 스프링 MVC의 핵심 역활을 하는 프론트 컨트롤러모든 HTTP 요청을 받아서 처리, 컨트롤러와 뷰를 연결서블릿 : HTTP 요청과 응답을 처리하는 자바 클래스HandlerMapping : 요청 URL과 적절한 컨트롤러를 매핑ex) /users 요청이 오면 UserController 를 호출하도록 설정 Controller - 사용자 요청을 처리, 모델 데이터를 뷰에 전달주로 @Controller, @RestControll..
- 2024-12-26 17:43:45
- Bean 스코프imaginaring빈의 생명주기와 생성 방식을 정의하는 설정 싱글톤 (기본값)싱글톤임 / 동일한 빈 이름 요청시 동일 객체 반환상태를 가지지 않는 객체(서비스, DAO 등)에서 주로 사용멀티스레드 환경에서 안전하게 동작 (상태 없는 설계)상태 저장 안함 : 특정 요청이나 스레드와 관련된 데이터를 저장하지 않도록 설계해야함인스턴스 변수를 사용하여 데이터를 저장시, 여러 스레드 동시 접근으로 데이터 불일치 혹은 충돌 발생 가능필요한 데이터는 매개변수로 전달, 동기화 블록 혹은 쓰레드 로컬, 요청 스코프(@Scopre("request")) 빈을 사용해야함 공 유데이터 대신 지역 변수 사용 (스레드 독립적) @Componentpublic class StatelessService { public int processOrder..
- 2024-12-26 16:53:54
- Mockimaginaring테스트 환경에서 실제 객체를 흉내내도록 만들어진 가짜 객체주로 단위테스트에서 사용됨테스트 코드가 외부 의존선에 의존하지 않고 독립적으로 테스트 될 수 있도록 도와줌외부 의존성 제거테스트 속도향상 - 실제 객체 대신 가짜 객체 사용으로 테스트가 더 빠르게 실행됨결과 제어 - 미리 정의된 동작과 반환값을 설정, 테스트 결과 예측 가능예외상황 테스트 - 특정 상황(DB 연결 실패, 네트워크 오류 등)을 쉽게 시뮬레이션 가능 호출 횟수 검증 - Mock객체를 통해 특정 메소드가 호출되었는지, 몇번 호출 됬는지 검증 가능테스트 신뢰성이 떨어짐 : 실제 객체의 동작과 다를 수 있음추가 설정 필요 : Mock 객체를 설정하고 관리하는 코드가 추가로 필요 Mock 객체 사용예제1. 실제 객체 사용시 문제점// 가정 :..
- 2024-12-24 11:55:34
- AOP 관계지향imaginaring관계지향이라는 말이 처음에는 이해가 안되서.. (절차면 절차, 객체면 객체지향이지 무슨 관계지향..? 관심법인가?)쉽게 설명을 하자면 식당의 요리사는 요리만 전담하지만 식당이 운영되기 위해서는 꼭 해야되는 청소, 뒷정리, 계산, 주문 내역확인 등이 있는데, 요리사 본연의 업무와는 상관없지만 식당이 굴러가기 위해선는 꼭 필요한 일이다.이런 일들을 공통관심사 라고 하고, 이들을 따로 담당하는 사람이 있다면 요리사는 요리에만 집중 할 수 있다 "AOP는 이러한 공통관심사 (청소, 계산 등)을 코드에서 분리하여 따로 관리하도록 돕는 프로그래밍 방식" 동작원리"공통 기능"을 특정지점(메소드 실행 전, 후 등)에 자동으로 실행시킴 AOP 적용X 예시@Servicepublic class MyService { p..
- 2024-12-24 11:28:35
- @ Annotation 어노테이션imaginaring목적메타데이터 제공 - 부가정보를 제공하여 런타임 또는 컴파일러가 처리할 수 있도록@Override, @Deprecated컴파일러 지시 - 컴파일러가 특정 경고롤 무시하거나, 잘못된 사용을 체크하도록@SuppressWarnings런타임 동작 변경프레임워크나 라이브러리가 런타임에 동적으로 동작 변경가능@Controller, JPA에서 @Entity가독성 향상, 너무 많으면 반대로 복잡해지고 가독성이 떨어질수도...메타데이터 의존 - 런타임 동작 이해하려면 어노테이션과 이를 처리하는 프레임 워크 동작 원리를 알아야함 자바 내장 어노테이션@Override@Deprecated - 해당 코드가 더 이상 사용되지 않음 (사용시 컴파일러 경고 발생)@SuppresssWarnings - 컴파일러가 경고를 무시하도록 지..
- 2024-12-24 10:50:37
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)