환경Java : 1.8 (회사 환경에 맞추다보니..)Go : 1.21.5gcc : 10.2.1OS : debian bullseye 본문Golang 함수 작성하기mkdir golangcd golanggo mod init main slice의 합을 구하여 반환하는 간단한 함수를 만들었다. (main.go)package mainfunc main() { // do nothing..}func sum(data []float64) float64 { var result float64 = 0 for _, v := range data { result += v } return result}Java 코드 작성하기public class Main { public static native double golangSum(do..
데이터 액세스참조 문서의 이 부분에서는 데이터 액세스 및 데이터 액세스 계층과 비즈니스 또는 서비스 계층 간의 상호 작용에 대해 다룹니다.Spring의 포괄적인 트랜잭션 관리 지원에 대해 자세히 다룬 다음, Spring 프레임워크가 통합되는 다양한 데이터 액세스 프레임워크와 기술에 대해 자세히 다룹니다.섹션 요약트랜잭션 관리DAO 지원JDBC를 사용한 데이터 액세스R2DBC를 사용한 데이터 액세스객체 관계형 매핑(ORM) 데이터 액세스Object-XML 매퍼를 사용한 XML 마샬링부록 트랜잭션 관리포괄적인 트랜잭션 지원은 Spring 프레임워크를 사용해야 하는 가장 강력한 이유 중 하나입니다. Spring 프레임워크는 트랜잭션 관리를 위한 일관된 추상화를 제공하여 다음과 같은 이점을 제공합니다:JTA(J..
WebTestClientWebTestClient는 서버 애플리케이션을 테스트하기 위해 설계된 HTTP 클라이언트입니다. Spring의 WebClient를 래핑하여 요청을 수행하는 데 사용하지만 응답을 확인하기 위한 테스트 파사드를 노출합니다. WebTestClient는 엔드투엔드 HTTP 테스트를 수행하는 데 사용할 수 있습니다. 또한 모의 서버 요청 및 응답 객체를 통해 실행 중인 서버 없이 Spring MVC 및 Spring WebFlux 애플리케이션을 테스트하는 데 사용할 수 있습니다.SetupWebTestClient를 설정하려면 바인딩할 서버 설정을 선택해야 합니다. 여러 모의 서버 설정 중 하나를 선택하거나 라이브 서버에 연결할 수 있습니다.컨트롤러에 바인딩이 설정을 사용하면 실행 중인 서버 없..
테스트이 장에서는 통합 테스트에 대한 Spring의 지원과 단위 테스트에 대한 모범 사례를 다룹니다. Spring 팀은 테스트 주도 개발(TDD)을 옹호합니다. Spring 팀은 제어의 역전(IoC)을 올바르게 사용하면 단위 테스트와 통합 테스트가 확실히 더 쉬워진다는 것을 발견했습니다(클래스에 세터 메서드와 적절한 생성자가 있으면 서비스 로케이터 레지스트리 및 유사한 구조를 설정할 필요 없이 테스트에서 이들을 쉽게 연결할 수 있다는 점에서).섹션 요약Spring 테스트 소개단위 테스트통합 테스트JDBC 테스트 지원Spring 테스트 컨텍스트 프레임워크웹테스트클라이언트MockMvc클라이언트 애플리케이션 테스트부록 Spring 테스트 소개테스트는 엔터프라이즈 소프트웨어 개발의 필수적인 부분입니다. 이 장에..
Null-safetyJava에서는 타입 시스템으로 널 안전성을 표현할 수 없지만, Spring 프레임워크는 org.springframework.lang 패키지에서 다음과 같은 어노테이션을 제공하여 API 및 필드의 널 가능성을 선언할 수 있도록 합니다:nullable: 특정 매개변수, 반환값 또는 필드가 null일 수 있음을 나타내는 어노테이션입니다.nonNull: 특정 매개변수, 반환값 또는 필드가 널이 될 수 없음을 나타내는 어노테이션( @NonNullApi 및 @NonNullFields가 각각 적용되는 매개변수, 반환값 및 필드에는 필요하지 않음).@NonNullApi: 매개변수와 반환값에 대한 기본 의미로 null이 아닌 것을 선언하는 패키지 수준의 어노테이션입니다.@NonNullFields: 필..
Spring AOP API이전 장에서는 @AspectJ와 스키마 기반 측면 정의를 사용한 Spring의 AOP 지원에 대해 설명했습니다. 이 장에서는 하위 수준의 Spring AOP API에 대해 설명합니다. 일반적인 애플리케이션의 경우 이전 장에서 설명한 대로 AspectJ 포인트컷과 함께 Spring AOP를 사용하는 것이 좋습니다.섹션 요약Spring의 포인트컷 APISpring의 어드바이저 APISpring의 어드바이저 APIProxyFactoryBean을 사용하여 AOP 프록시 생성하기간결한 프록시 정의ProxyFactory를 사용하여 프로그래밍 방식으로 AOP 프록시 생성하기어드바이저 객체 조작하기"자동 프록시" 기능 사용TargetSource 구현 사용새로운 조언 유형 정의하기 Pointcu..
Spring을 사용한 측면 지향 프로그래밍객체지향 프로그래밍(AOP)은 프로그램 구조에 대한 또 다른 사고 방식을 제공함으로써 객체지향 프로그래밍(OOP)을 보완합니다. OOP에서 모듈성의 핵심 단위는 클래스인 반면, AOP에서는 모듈성의 단위가 측면입니다. 측면을 사용하면 여러 유형과 객체에 걸쳐 있는 관심사(예: 트랜잭션 관리)를 모듈화할 수 있습니다. (이러한 우려는 종종 AOP 문헌에서 "교차" 우려라고 불립니다.)Spring의 핵심 구성 요소 중 하나는 AOP 프레임워크입니다. Spring IoC 컨테이너는 AOP에 의존하지 않지만(즉, 원하지 않는 경우 AOP를 사용할 필요가 없습니다), AOP는 Spring IoC를 보완하여 매우 유능한 미들웨어 솔루션을 제공합니다.AspectJ 포인트컷을 ..
Spring 표현 언어(SpEL)Spring 표현 언어(줄여서 "SpEL")는 런타임에 객체 그래프를 쿼리하고 조작하는 것을 지원하는 강력한 표현 언어입니다. 언어 구문은 Jakarta 표현 언어와 유사하지만 메서드 호출과 기본 문자열 템플릿 기능 등 추가 기능을 제공합니다.OGNL, MVEL, JBoss EL 등 여러 가지 다른 Java 표현 언어가 있지만, Spring 표현 언어는 Spring 포트폴리오의 모든 제품에서 사용할 수 있는 잘 지원되는 단일 표현 언어를 Spring 커뮤니티에 제공하기 위해 만들어졌습니다. 이 언어의 기능은 Spring 도구용 이클립스 내에서 코드 완성 지원을 위한 도구 요구 사항을 포함하여 Spring 포트폴리오에 포함된 프로젝트의 요구 사항에 따라 결정됩니다. 즉, S..