무근본 IT 지식 공유/무근본 스프링(Spring Framework)16 Spring 프레임워크의 소스 호출 흐름을 도식화 분석하고자 하는 Spring 프레임워크의 소스 호출 흐름을 도식화하기 위한 여러 도구와 접근 방법이 있습니다. 소스 흐름을 파악하고 시각화할 수 있는 주요 방법들을 소개하겠습니다. 1. IntelliJ IDEA 또는 Eclipse와 같은 IDE 사용이러한 개발 환경은 코드 내에서 메소드 간 호출 관계를 분석하고 시각화하는 기능을 제공합니다. 예를 들어, IntelliJ의 ‘Call Hierarchy’ 기능을 사용하면 특정 메소드에서 호출되는 모든 메소드의 리스트를 볼 수 있으며, 이를 통해 소스 호출 흐름을 추적할 수 있습니다. 2. Spring InsightSpring Insight는 Spring 애플리케이션의 성능 모니터링 및 분석 도구입니다. 이 도구는 애플리케이션의 런타임 성능을 분석하여 어떤 컴.. 2024. 3. 18. Spring Framework의 "핵심 기술" 에 대해 알아보자 - 공식 문서 해설 시리즈 2장. 핵심 기술 참조 문서의 이 부분에서는 Spring 프레임워크에 절대적으로 필수적인 모든 기술을 다룹니다. 그중에서도 가장 중요한 것은 Spring 프레임워크의 IoC(Inversion of Control) 컨테이너입니다. 스프링 프레임워크의 IoC 컨테이너에 대한 자세한 설명에 이어서 스프링의 측면 지향 프로그래밍(AOP) 기술에 대한 포괄적인 내용이 이어집니다. Spring 프레임워크에는 개념적으로 이해하기 쉽고 Java 엔터프라이즈 프로그래밍에서 AOP 요구 사항의 80%의 스위트 스팟을 성공적으로 해결하는 자체 AOP 프레임워크가 있습니다. 현재 Java 엔터프라이즈 영역에서 가장 풍부하고 기능 면에서 가장 성숙한 AOP 구현을 제공하는 AspectJ와 Spring의 통합도 제공됩니다. AO.. 2024. 3. 12. Spring Framework 디자인 철학 알아보고 시작하기 - 공식문서 리뷰 1.3. 디자인 철학 프레임워크에 대해 배울 때는 프레임워크가 하는 일뿐만 아니라 어떤 원칙을 따르는지 아는 것이 중요합니다. 다음은 Spring 프레임워크의 기본 원칙입니다: - 모든 수준에서 선택권을 제공하세요. Spring을 사용하면 디자인 결정을 최대한 늦게 내릴 수 있습니다. 예를 들어, 코드를 변경하지 않고도 구성을 통해 지속성 공급자를 전환할 수 있습니다. 다른 많은 인프라 문제와 타사 API와의 통합도 마찬가지입니다. - 다양한 관점을 수용하세요. Spring은 유연성을 수용하며 작업 수행 방식에 대해 고집하지 않습니다. 다양한 관점을 가진 광범위한 애플리케이션 요구 사항을 지원합니다. - 강력한 하위 호환성을 유지합니다. Spring의 진화는 버전 간에 큰 변화를 거의 강요하지 않도록 신.. 2024. 3. 12. 1.2장 - Spring과 Spring 프레임워크의 역사 1.2. Spring과 Spring 프레임워크의 역사 Spring은 초기 J2EE 사양의 복잡성에 대한 대응책으로 2003년에 등장했습니다. 일부에서는 Java EE와 그 현대적 후속 버전인 Jakarta EE를 Spring과 경쟁 관계에 있다고 생각하지만, 사실 이들은 상호 보완적인 관계에 있습니다. Spring 프로그래밍 모델은 Jakarta EE 플랫폼 사양을 수용하는 것이 아니라 엄선된 개별적인 사양과 통합됩니다: - 서블릿 API(JSR 340) - 웹소켓 API(JSR 356) - 동시성 유틸리티(JSR 236) - JSON 바인딩 API(JSR 367) - Bean 유효성 검사(JSR 303) - JPA(JSR 338) - JMS(JSR 914) 뿐만 아니라 필요한 경우 트랜잭션 조정을 위한.. 2024. 3. 12. 1장. Spring 프레임워크 개요 (Spring Framework 공식문서 해석) 1장. Spring 프레임워크 개요 Spring을 사용하면 Java 엔터프라이즈 애플리케이션을 쉽게 만들 수 있습니다. 이 프레임워크는 엔터프라이즈 환경에서 Java 언어를 수용하는 데 필요한 모든 것을 제공하며, JVM의 대체 언어로서 Groovy 및 Kotlin을 지원하고 애플리케이션의 필요에 따라 다양한 종류의 아키텍처를 생성할 수 있는 유연성을 제공합니다. Spring 프레임워크 5.1부터 Spring은 JDK 8+(Java SE 8+)가 필요하며, JDK 11 LTS를 즉시 지원합니다. Java SE 8의 최소 패치 릴리스로는 Java SE 8 업데이트 60이 권장되지만 일반적으로 최신 패치 릴리스를 사용하는 것이 좋습니다. Spring은 다양한 애플리케이션 시나리오를 지원합니다. 대기업에서는 .. 2024. 3. 12. [무근본 스프링] @Test 어노테이션에 대해 - 왕초보도 이해하는 상세 설명 ! @Test 어노테이션은 JUnit 프레임워크에서 테스트 메서드임을 나타내는 어노테이션입니다. Spring Framework에서도 JUnit을 기반으로 하므로 @Test 어노테이션을 사용하여 테스트 코드를 작성할 수 있습니다. 이 어노테이션은 메서드에 붙여서 해당 메서드가 테스트 메서드임을 나타내며, 해당 메서드가 실행되면서 자동으로 단위 테스트가 수행됩니다. @Test 어노테이션에 대해 더 자세히 알아보겠습니다. [사용 방법] @Test 어노테이션은 다음과 같이 메서드에 붙여 사용합니다. @Test public void testMethod() { // 테스트할 코드 작성 } @Test 어노테이션을 사용하여 정의한 메서드는 단위 테스트를 위한 메서드입니다. 메서드 이름은 테스트의 의미를 잘 나타내도록 작성.. 2023. 4. 20. [무근본 스프링] REST API에서 PATCH 요청이란? - 코드 샘플 REST API에서 PATCH 요청은 리소스의 일부분을 수정하는 요청입니다. PUT 요청과는 달리, PATCH 요청은 리소스의 전체를 교체하지 않고 일부분만 수정하는 것이 목적입니다. 예를 들어, 게시글의 제목(title)만 변경하고자 할 경우, PATCH 요청을 사용하여 서버에 해당 변경 사항을 전달합니다. PATCH 요청은 PUT 요청과 달리 전송되는 데이터가 변경된 속성만 포함하고, 나머지 속성은 변경되지 않은 상태로 유지됩니다. REST API에서 PATCH 요청을 처리하기 위해서는, 클라이언트가 전달한 데이터를 분석하여 변경된 속성을 식별하고, 해당 속성만 업데이트하는 로직이 필요합니다. 이를 위해서는 서버 측에서 별도의 PATCH 요청 핸들러를 구현해야 합니다. Spring Framework에.. 2023. 4. 20. [무근본 스프링] 클라이언트 상호 인증서 방식 사용하기(발급부터 사용까지) 웹에서 클라이언트 상호 인증서 방식을 사용하는 이유 웹에서 클라이언트 상호 인증서 방식을 사용하는 이유는 다음과 같습니다. 보안 강화 일반적인 HTTP 프로토콜을 사용하는 웹 서비스는 암호화되지 않은 데이터를 전송하기 때문에, 중간에 데이터를 가로채어서 정보를 탈취할 수 있는 보안 취약점이 존재합니다. HTTPS 프로토콜은 데이터를 암호화하여 전송하기 때문에, 이러한 보안 취약점을 보완할 수 있습니다. 클라이언트 상호 인증서 방식을 사용하면, 서버와 클라이언트 간의 상호 인증을 수행하여 더욱 보안을 강화할 수 있습니다. 불법 접근 방지 일반적인 로그인 방식은 사용자 ID와 비밀번호를 입력하여 인증하는 방식입니다. 이 경우, 타인이 사용자 ID와 비밀번호를 알아내어 불법적으로 접근할 수 있는 취약점이 존재.. 2023. 4. 15. [무근본 스프링] @Value 어노테이션에 대해 (예시 코드 포함) Spring에서 @Value 어노테이션에 대해 Spring에서 @Value 어노테이션은 스프링 빈으로 등록된 객체에서 properties 파일이나 환경 변수 등의 값을 주입받을 때 사용됩니다. @Value 어노테이션을 사용하면, properties 파일이나 환경 변수 등에 정의된 값을 손쉽게 읽어올 수 있습니다. 예를 들어, 다음과 같은 properties 파일이 있다고 가정해봅시다. database.url=jdbc:mysql://localhost:3306/mydb database.username=admin database.password=1234 이 properties 파일에 정의된 값을 읽어오기 위해서는, 먼저 Spring의 PropertySourcesPlaceholderConfigurer 빈을 등록.. 2023. 4. 15. [무근본 스프링] @transactional 어노테이션에 대해 (예시코드 포함) Spring의 @Transactional 어노테이션 Spring의 @Transactional 어노테이션은 메서드 레벨이나 클래스 레벨에서 사용할 수 있으며, 데이터베이스 트랜잭션 관리를 간편하게 할 수 있게 해줍니다. @Transactional 어노테이션을 사용하면, 해당 메서드가 실행될 때 Spring은 트랜잭션을 시작하고, 메서드 실행이 완료될 때 트랜잭션을 종료합니다. 만약 메서드 실행 중에 예외가 발생하면, Spring은 자동으로 트랜잭션 롤백을 수행하여 이전 상태로 되돌립니다. 예를 들어, 다음은 @Transactional 어노테이션을 사용하여 간단한 서비스 계층의 메서드를 구현한 예입니다: @Service public class UserService { @Autowired private Use.. 2023. 4. 15. [무근본 스프링(Spring Framework) 공부 - 컴파일 하는 방법 !! (2) - 왕초보도 이해하는 스프링 Gradle은 Groovy 언어로 작성된 오픈 소스 빌드 자동화 도구입니다. Gradle은 Maven과 같은 빌드 도구보다 더 유연하며, Groovy DSL을 사용하여 빌드 스크립트를 작성할 수 있습니다. Spring Framework 프로젝트를 Gradle을 사용하여 컴파일하는 방법은 다음과 같습니다. 1. 먼저, Gradle을 설치합니다. 2. 프로젝트 디렉토리에서 build.gradle 파일을 생성합니다 touch build.gradle 3. build.gradle 파일을 열고, Spring Framework에 필요한 의존성을 추가합니다. dependencies { implementation 'org.springframework:spring-core:5.3.5' implementation 'org... 2023. 3. 27. [무근본 스프링(Spring Framework) 공부] 컴파일 하는 방법 !! (1) - 왕초보도 이해하는 스프링 Spring Framework는 자바 언어로 작성된 오픈 소스 애플리케이션 프레임워크이며, 일반적으로 Maven 또는 Gradle과 같은 빌드 도구를 사용하여 컴파일됩니다. 아래 예시는 Maven을 사용하여 Spring Framework를 컴파일하는 간단한 예시입니다. 1. 먼저, Maven을 설치하고 환경 변수를 설정합니다. 2. 프로젝트 디렉토리에서 Maven 프로젝트를 생성합니다. mvn archetype:generate -DgroupId=com.example.spring -DartifactId=my-spring-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false 3. 생성된 프로젝트 디렉토리로 이동합니다. cd .. 2023. 3. 27. [무근본 스프링(Spring Framework) 공부] 스프링에서 Map 형태로 데이터 리턴하기 - 왕초보도 이해하는 스프링 프레임워크 Spring에서 Map 형태로 데이터를 리턴하는 경우는 다양합니다. 가장 일반적인 예시는 Controller에서 JSON 형태의 데이터를 리턴하는 경우입니다. Spring MVC는 Jackson이나 Gson 같은 JSON 라이브러리를 사용하여 자동으로 Map 형태로 데이터를 변환하고 JSON으로 출력합니다. 예를 들어, 다음과 같은 Controller 메소드가 있다고 가정해봅시다. @GetMapping("/students") public Map getStudents() { Map students = new HashMap(); students.put("Alice", 95); students.put("Bob", 85); students.put("Charlie", 90); return students; } 위.. 2023. 3. 26. [무근본 스프링(Spring Framework) 공부] 카프카 큐(Kafka Queue)를 스프링 프레임워크와 연결하는 예제 카프카는 대규모 데이터 처리를 위한 분산 메시징 시스템으로, 스프링 프레임워크와 함께 사용하면 더욱 편리한 애플리케이션 개발이 가능합니다. 이 글은 스프링 부트와 스프링 카프카를 사용하여 카프카와 연결하는 예제 코드를 포함하고 있습니다. 1. Maven 또는 Gradle을 사용하여 스프링 카프카 및 카프카 클라이언트를 프로젝트에 추가합니다. org.springframework.kafka spring-kafka 2.7.6 org.apache.kafka kafka-clients 3.0.0 2. 카프카 프로듀서와 컨슈머를 생성할 때 사용할 설정을 정의합니다. @Configuration @EnableKafka public class KafkaConfig { @Value("${kafka.bootstrap-serv.. 2023. 3. 26. [무근본 스프링(Spring Framework) 공부] AOP가 대체 뭔데?? 예시 코드로 알려드릴게요 Spring AOP (Aspect-Oriented Programming)은 객체 지향 프로그래밍 패러다임에서 공통적으로 발생하는 기능(로깅, 예외 처리 등)을 분리해서 관리하는 프로그래밍 기법입니다. 이를 통해 코드의 재사용성을 높이고, 유지보수성을 개선할 수 있습니다. Spring AOP는 프록시 기반의 AOP를 지원합니다. 핵심 비즈니스 로직을 실행하는 객체를 대신해서 공통 기능을 수행하는 프록시 객체를 생성하고, 이를 통해 핵심 비즈니스 로직에 삽입됩니다. 예를 들어, 아래와 같은 간단한 클래스가 있다고 가정해봅시다. public class UserService { public void saveUser(User user) { System.out.println("User " + user.getName.. 2023. 3. 26. [무근본 스프링(Spring Framework) 공부] 화면에서 스프링 framework 서버로 파일 업로드 구현하기 파일 업로드를 구현하기 위해서는 스프링과 JavaScript 둘 다 사용해야 합니다. 스프링을 이용해 서버 측에서 파일을 처리하는 코드를 작성해야 하며, 이후 JavaScript를 사용해 클라이언트 측에서 파일 선택 및 업로드를 처리합니다. 스프링을 이용한 파일 처리 먼저, 스프링을 사용해 파일 처리를 구현해보겠습니다. 파일을 업로드하려면 MultipartResolver를 사용해야 합니다. 따라서, 스프링 설정 파일에 다음과 같은 빈을 추가해줍니다. 이제 파일을 처리할 컨트롤러를 작성해보겠습니다. @Controller public class FileController { @RequestMapping(value = "/uploadFile", method = RequestMethod.POST) public .. 2023. 3. 26. 이전 1 다음