spring12 Java에서 ProcessBuilder와 클래스패스 설정에 대한 이해 Java에서 ProcessBuilder와 클래스패스 설정에 대한 이해Java 프로그램을 외부에서 실행할 때, ProcessBuilder를 사용하여 외부 프로세스를 실행하는 경우가 많다. 하지만, 외부 프로세스에서 클래스를 로드할 때 클래스패스(classpath) 설정과 실행 디렉토리가 일치하지 않으면 예상치 못한 문제가 발생할 수 있다. 특히, java 명령어를 통해 실행할 때, 클래스 파일을 찾는 경로에 대한 이해가 중요하다. 1. 클래스패스 설정의 중요성java 명령어는 클래스를 찾기 위해 클래스패스를 사용한다. 클래스패스는 -cp 옵션을 통해 지정할 수 있다. 이때, 클래스패스를 설정하는 방식에 따라 외부 프로세스에서 클래스를 올바르게 로드할 수 있느냐의 차이가 발생한다. 예를 들어, -cp t.. JAVA/Spring 2024. 12. 30. Spring @ComponentScan의 includeFilters와 excludeFilters 완벽 이해 Spring @ComponentScan의 includeFilters와 excludeFilters 완벽 이해 Spring 프레임워크에서 애플리케이션의 빈을 관리할 때 @ComponentScan은 중요한 역할을 한다. 일반적으로 @Component나 @Service와 같은 애노테이션이 붙은 클래스를 스캔해 스프링 컨테이너에 빈으로 등록하지만, 때로는 특정 클래스를 제외하거나 포함해야 할 상황이 생길 수 있다. 이때 사용하는 것이 바로 includeFilters와 excludeFilters이다. 하지만 두 옵션의 동작 방식과 차이를 명확히 이해하지 못하면 혼란이 생길 수 있다. 필자의 경우도 excludeFilters와 includeFilters를 사용할 때 조건이 동일하다고 생각했지만, 실제 결과는 다르게 .. JAVA/Spring 2024. 12. 21. DI(의존관계 주입, Dependency Injection)란 무엇인가? DI(의존관계 주입, Dependency Injection)란 무엇인가? 의존관계 주입(Dependency Injection, DI)은 객체 간의 의존성을 외부에서 주입받는 설계 방식을 말한다.이 방식은 객체를 직접 생성하거나 내부에서 의존성을 설정하지 않고, 외부에서 필요한 의존성을 주입함으로써 결합도를 낮추고 코드의 유연성과 재사용성을 높인다. DI의 핵심 개념의존성(Dependency)한 객체가 다른 객체의 기능이나 데이터를 사용할 때, 해당 객체는 그 다른 객체에 의존한다고 말한다.예를 들어, OrderService가 PaymentService를 호출해 결제를 처리해야 한다면, OrderService는 PaymentService에 의존한다.의존관계 주입(Dependency Injection.. JAVA/Spring 2024. 12. 20. Spring에서 생성자에 @Autowired 어노테이션을 사용하는 이유와 장점 Spring에서 생성자에 @Autowired 어노테이션을 사용하는 이유와 장점Spring Framework에서 의존성 주입(Dependency Injection)은 객체 간 결합도를 낮추고 유지보수성을 높이기 위해 사용된다. 의존성을 주입하는 방법 중 하나로 생성자 주입(Constructor Injection)이 있으며, 이때 @Autowired 어노테이션이 자주 활용된다. 이번 글에서는 @Autowired를 생성자와 함께 사용하는 이유와 장점을 코드 예시와 함께 설명한다. 의존성 주입 방법Spring에서 의존성 주입은 다음 세 가지 방식으로 수행된다.필드 주입(Field Injection)Setter 주입(Setter Injection)생성자 주입(Constructor Injection)이 중 생성.. JAVA/Spring 2024. 12. 20. [스프링 싱글톤] : 왜 @Bean은 한 번만 호출될까? 스프링 싱글톤: 왜 @Bean은 한 번만 호출될까?스프링 프레임워크는 객체 관리를 효율적으로 처리하기 위해 **싱글톤(Singleton)**이라는 개념을 기본적으로 채택하고 있다. 이번 글에서는 스프링에서 @Bean이 선언된 메서드들이 왜 한 번만 호출되는지와 관련된 싱글톤 컨테이너의 동작 원리를 설명한다. 문제 상황아래는 스프링 애플리케이션에서 사용할 설정 클래스이다.@Configurationpublic class AppConfig { @Bean public MemberService memberService() { System.out.println("call AppConfig.memberService"); return new MemberServiceImpl(me.. JAVA/Spring 2024. 12. 20. [스프링 빈과 싱글톤 패턴: 무상태로 설계해야 하는 이유?] [스프링 빈과 싱글톤 패턴: 무상태로 설계해야 하는 이유??] 1. 싱글톤 패턴과 스프링 빈스프링 프레임워크는 객체를 싱글톤 패턴 방식으로 관리한다. 싱글톤은 객체 인스턴스를 단 하나만 생성하고, 이를 여러 클라이언트와 공유하기 때문에 메모리 사용을 절약할 수 있다는 장점이 있다.그러나 싱글톤 방식에서 공유되는 객체를 상태를 유지(stateful) 하게 설계하면 큰 문제가 발생할 수 있다. 2. 상태를 유지하는 객체의 문제점싱글톤 객체는 하나의 인스턴스를 여러 클라이언트가 공유한다. 이때 상태를 유지하는 필드가 있다면 다음과 같은 문제가 발생한다.특정 클라이언트에 의존적인 필드가 생긴다.필드를 변경할 수 있는 클라이언트가 값을 덮어쓰게 된다.여러 클라이언트가 동시에 객체를 사용할 경우 데이터 불일치.. JAVA/Spring 2024. 12. 17. 스프링 BeanDefinition 완벽 정리: 빈 설정 메타정보 탐구 스프링 BeanDefinition 완벽 정리: 빈 설정 메타정보 탐구1. BeanDefinition이란?BeanDefinition은 스프링 컨테이너가 빈(bean)의 메타정보를 담아두는 추상화 모델이다. 스프링은 다양한 형태의 빈 설정 정보(Java Config, XML, 어노테이션)를 모두 BeanDefinition이라는 하나의 모델로 추상화하여 사용한다.즉, 개발자가 Java 코드로 설정하든, XML로 설정하든 스프링 내부에서는 결국 BeanDefinition 객체로 변환되어 관리된다. 2. BeanDefinition 주요 정보BeanDefinition이 담고 있는 주요 속성은 다음과 같다:BeanClassName: 생성할 빈의 클래스명예) hello.core.service.MemberService.. JAVA/Spring 2024. 12. 16. 스프링 빈 조회: 부모 타입과 Object 타입의 차이점 스프링 빈 조회: 부모 타입과 Object 타입의 차이점스프링 프레임워크에서 빈(Bean)을 조회할 때 부모 타입과 Object 타입으로 조회하는 경우가 있다. 이 두 가지 방식 모두 빈의 타입 계층에 따라 결과가 달라지므로 이를 정확히 이해해야 스프링 애플리케이션을 효과적으로 관리할 수 있다. 1. 부모 타입으로 빈 조회부모 타입으로 빈을 조회하면 해당 부모 타입과 그 자식 타입까지 조회된다. 즉, 부모 타입을 상속받거나 구현한 모든 빈이 조회 대상이 된다. @Configurationclass AppConfig { @Bean public ParentBean childBean1() { return new ChildBean1(); } @Bean public .. JAVA/Spring 2024. 12. 16. Spring 컨테이너(ApplicationContext)를 사용해야 하는 이유 Spring 컨테이너(ApplicationContext)를 사용해야 하는 이유 Spring 프레임워크를 사용하면서 ApplicationContext와 같은 컨테이너를 적용하면 처음에는 코드가 복잡해진다고 느낄 수 있다. 하지만 장기적으로 보면 Spring 컨테이너의 도입은 코드의 유지보수와 확장성에 큰 이점을 제공한다. 이번 글에서는 Spring 컨테이너를 사용했을 때 얻을 수 있는 장점과 함께 간단한 예제를 통해 그 필요성을 살펴보겠다. 1. Spring 컨테이너(ApplicationContext)란 무엇인가?Spring 컨테이너는 애플리케이션의 객체를 생성하고 관리하는 핵심 역할을 한다. Spring에서는 IoC(Inversion of Control) 원칙을 기반으로 객체의 생성 및 의존성 주입을 .. JAVA/Spring 2024. 12. 16. AOP, PSA [Spring Framework의 특징?] 현재 포스팅은 https://mininkorea.tistory.com/42 Spring Framework 기본 [스프링 제대로 알아가기] DAY1 현재 스프링의을 정확히 이해하기 위해서 10일동안 복습을 진행하려고한다. DAY 1: Spring의 기본 ~ DI,AOP 핵심개념 짚어가기 [Spring Mvc ↓] DAY2 : API, 서비스, 예외처리 DAY3 : JDBC DAY4 : JPA DAY5 : 트랜젝션 mininkorea.tistory.com 위 게시글의 뒷부분을 이어갑니다. AOP란? (Aspect Oriented Programming) AOP는 애플리케이션의 핵심 업무 로직에서 로깅이나 보안, 트랜잭션 같은 공통 기능 로직들을 분리하는 것으로 이해하면 된다. AOP가 필요한 이유? 공통 기능.. 카테고리 없음 2023. 3. 10. Spring Framework 기본 [스프링 제대로 알아가기] DAY1 현재 스프링의을 정확히 이해하기 위해서 10일동안 복습을 진행하려고한다. DAY 1: Spring의 기본 ~ DI,AOP 핵심개념 짚어가기 [Spring Mvc ↓] DAY2 : API, 서비스, 예외처리 DAY3 : JDBC DAY4 : JPA DAY5 : 트랜젝션 + 테스팅 DAY 6: API문서화 DAY 7: APP 빌드/실행배포 순으로 복습 블로깅을 시작하려고 한다. 정확한 내용을 이해하고 활용하기 위함이 목적이고, 개인적인 공부를 위해 작성 되었으니 틀린부분 지적은 언제나 환영합니다!!! ㅎㅎ review의 과정 1. 어떤 문제가 발생했는지.. 2. 해결하기 위해 어떤 시도를 했는지.. 3. 해결이 되었는지 해결이 되지 않았는지.. 4. 어떤 방법으로 해결이 되었는지.. Spring Framew.. JAVA/Spring 2023. 3. 9. Aggregate? (애그리거트) 객체지향 프로그래밍 중요 개념 / Java Spring 학습 Aggregate(에그리거트)란? 소프트웨어 개발에서 관련된 객체들의 집합을 의미한다. 보통 하나의 대상에 대해 여러 객체를 생성하여 각 객체들이 서로 상호작용하도록 구성할 때, 이를 하나의 에그리거트로 묶어서 처리하는것이 일반적이다. 예를들어) 주문(Order)에 대한 객체를 생각하면, 주문 상품, 주문 배송지, 주문 결제정보 등 여러 객체들이 존재한다. 이때, 이러한 객체들을 하나의 에그리거트로 묶어 처리하는 것이 엄청 효율적이다! 보통 특정 비즈니스 로직을 수행하는데 필요한 객체들을 모아서 관리하게 된다. 이렇게 모아진 객체들은 각각의 역할을 수행하면서, 하나의 대상을 처리하는데 필요한 기능을 제공한다. Aggregate(에그리거트) 구현 방법 에그리거트를 구현하는 방법은 다양하다. 일반적인방법 객.. JAVA/Spring 2023. 2. 21. 이전 1 다음