Spring(ItelliJ & Gradle)9 @ComponentScan, @Component https://mjlee4330.tistory.com/144 [Spring] Spring Container & Bean (컨테이너 & 빈) 스프링 컨테이너 (Spring Container) ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext 인터페이스가 스프링에서 사용되는 컨테이너, 즉 스프링 컨테이너다. 스 mjlee4330.tistory.com 위에서 스프링 빈을 등록하기 위해서 @Bean 애너테이션을 적용한 메서드를 이용하거나 XML 태그를 이용하여서 설정 정보를 직접 작성하였다. 현업에서 사용되는 빈은 수없이 많을텐데 이를 하나하나 작성하여 빈.. Spring(ItelliJ & Gradle) 2023. 4. 19. [Spring] static 메서드에 @Bean을 적용하였을 때 feat.프록시(Proxy) 스프링 강의를 수강하던 중 싱글톤 컨테이너와 관련해서 테스트를 진행하였다. 스프링 컨테이너는 싱글톤 컨테이너이기 때문에 반드시 동일한 객체를 반환해야 하는데 서로 다른 객체가 반환되었다. // Test 코드 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); MemberServiceImpl memberService = ac.getBean("memberService", MemberServiceImpl.class); OrderServiceImpl orderService = ac.getBean("orderService", OrderServiceImpl.class); MemberReposit.. Spring(ItelliJ & Gradle) 2023. 4. 17. [Spring] AssertJ, Assertion AssertJ AssertJ는 JUnit의 Assertions을 위한 유연한 인터페이스를 제공하는 것으로 테스트 코드의 가독성을 높이고, 테스트 유지보수를 용이하게 만들어 준다. 그러므로 AssertJ에 대해 알아보기 전 Assertion을 먼저 알아보자... 1. Assertion JUnit 5의 단언문으로 메서드를 이용해서 테스트에서 검증하고자 하는 내용을 확인하는 기능을 제공한다. 만약 단언이 실패할 경우 (fail) AssertionError를 반환한다. 메소드 설명 assertEquals(x, y) 객체 x와 y가 일치하는지 확인 x(예상 값)와 y(실제 값)가 같으면 테스트 통과 assertArrayEquals(a, b); 배열 A와 B가 일치하는지 확인 x(예상 값)와 y(실제 값)가 같으면.. Spring(ItelliJ & Gradle) 2023. 4. 7. 스프링이란? 스프링(Spring) 스프링은 문맥에 따라 다르게 사용된다 스프링 DI 컨테이너 기술 스프링 프레임워크 스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 생태계(기술들) 스프링의 대표적인 기술은 스프링 프레임워크이다. 스프링 프레임워크(Spring Framework) 핵심기술: DI 컨테이너, AOP, 이벤트, 기타... 웹기술: MVC, WebFlux 데이터 접근 기술: 트랜잭션, JDBC, ORM 지원, XML 지원 기술 통합: 캐시, 이메일, 원격접근, 스케줄링 테스트: 스프링 기반 테스트 지원 언어: 코틀린, 그루비 프레임워크란? 뼈대나 근간을 이루는 코드들의 묶음 - 프로그램의 기본흐름이나 구조를 정하고, 모든 팀원이 이 구조에 자신의 코드를 추가하여 개발하도록 함 - 개발에 필요한 구조.. Spring(ItelliJ & Gradle) 2023. 4. 6. [Spring] 싱글톤 패턴(Singleton Pattern) 싱글톤(Singleton) 싱글톤은 디자인 패턴 종류 중 하나로 객체의 인스턴스가 오직 한 개만 생성되는 패턴을 의미한다. 싱글톤을 사용하는 이유🤔 객체를 생성할 때마다 메모리 영역을 할당받아야 한다. 하지만 일반적으로 웹 애플리케이션은 동시에 여러 사용자의 요청이 들어오므로, 요청한 개수만큼 객체를 생성해야 하기 때문에 메모리 낭비가 발생한다. (초 당 트래픽 1000 = 초 당 1000개 객체 생성) 그렇기 때문에 메모리 낭비를 방지하고자 하나의 객체만을 만들어 공유하는 것이다. //자기 자신을 내부에 private static으로 가지기 때문에 딱 하나의 인스턴스만을 가진다. private static final SingletonService instance = new SingletonService.. Spring(ItelliJ & Gradle) 2023. 3. 3. [Spring] 빈 조회 스프링 컨테이너에 등록된 빈 조회하는 방법에 대해서 알아보자 1. 기본적인 빈 조회 방법 스프링 컨테이너에서 스프링 빈을 찾는 가장 기본적인 조회 방법 @Configuration public class JavaConfig { @Bean public Chef chef() { return new Chef(); } @Bean public Hotel hotel () { return new Hotel(new Chef()); } @Bean public Recipe makeRamen() { return new Ramen(); } } 1) 빈 이름으로 조회 getBean(빈 이름, 타입) AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationCo.. Spring(ItelliJ & Gradle) 2023. 3. 3. [Spring] Spring Container & Bean (컨테이너 & 빈) 스프링 컨테이너 (Spring Container) ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext 인터페이스가 스프링에서 사용되는 컨테이너, 즉 스프링 컨테이너다. 스프링 컨테이너는 XML을 기반으로 해서 만들 수도 있지만 최근에는 애노테이션을 기반으로 한 자바 설정 클래스를 이용해서 만든다. Java에서는 개발자가 AppConfig를 사용하면서 직접 객체를 생성하였고 DI를 하였지만, 스프링에서는 스프링 컨테이너를 사용한다. 스프링 컨테이너가 생성될 때 @Configuration 이 붙은 AppConfig 클래스를 매개변수로 받아 AppConfi.. Spring(ItelliJ & Gradle) 2023. 3. 2. [Spring] 객체 지향 설계의 5가지 원칙(SOLID) 객체지향 프로그래밍 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 '객체'들의 모임으로 파악하는 것. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 유연하고 변경이 용이하다? 레고 블럭 조립 / 키보드, 마우스 바꾸는 것으로 생각하자. 마우스의 역할은 하나지만 실제 사용되는 마우스(구현체)는 게이밍 / 버티컬 /유선 등 다양하게 존재한다. 실제 사용되는 마우스가 변경되어도 마우스의 역할이 변경되지 않기에 사용자에게 영향을 주지 않는다. 즉, Java에서는 다형성을 통해서 유연하고 변경이 용이하게 할 수 있다. 역할 = 인터페이스 구현 = 인터페이스를 구현한 클래.. Spring(ItelliJ & Gradle) 2023. 2. 20. [Spring] 프로젝트 생성(IntelliJ & Gradle) 1. https://start.spring.io/ 스프링 홈페이지에서 스프링 다운로드 받기 (Spring Boot 버전은 2.7.8로 진행하였으며 Java 11 버전을 이용한다.) 만약 Spring Boot 3.0 이상의 버전을 사용한다면 Java 17 버전 이상을 사용해야하고, javax 패키지 이름을 jakarta로 변경해야 한다. ex) JPA 어노테이션 : javax.persistance.Entity -> @jakarta.persistance.Entity // @PostConstrunct 어노테이션 javax.annotation.PostConstruct -> jakarta.annotation.PostConstruct // javax.validation -> jakarta.validation 2. .. Spring(ItelliJ & Gradle) 2023. 2. 8. 이전 1 다음