본문 바로가기

Spring12

[Spring] 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (3) 1. 회원 관리 웹 애플리케이션 요구 사항 Member, MemberRespository를 생성한다. Repository의 경우 싱글톤 패턴을 위해 생성자를 Private 로 막아둔다. package hello.servlet.domain.member; import lombok.Getter; import lombok.Setter; @Getter @Setter public class Member { private Long id; private String name; private int age; public Member() { } public Member(String name, int age) { this.name = name; this.age = age; } } package hello.servlet.do.. 2024. 4. 21.
[Spring] 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (1) 웹 애플리케이션 이해 1. 웹 서버, 웹 애플리케이션 서버 웹 서버(Web Server) 정적 리소스 제공, 기타 부가기능(HTML, CSS, JS, 이미지, 영상 등) Ex) NginX, Apache 웹 애플리케이션 서버(WAS - Web Application Server) 프로그램 코드를 실행해서 애플리케이션 로직 수행 Servlet, JSP, Spring MVC Ex) Tomcat, Jetty, Undertow 웹 서버, 웹 애플리케이션 서버 차이 웹 서버는 정적 리소스, WAS는 애플리케이션 로직 웹 시스템 구성 - WEB, WAS, DB 웹 서버가 정적 리소스 처리 WAS는 중요 애플리케이션 로직 처리 전담 WAS, DB 장애시 WEB 서버가 오류 화면 제공 가능 2. 서블릿 웹 통신 과정 웹브.. 2023. 7. 26.
[Spring][Error] Java PKIX path building failed: Spring 에서 RestTemplate을 사용하여 https 통신을 하다 보면 PKIX path 오류가 발생하는 경우가 있다. 이는 JDK에서 인증서 확인 절차에서 오류가 발생한 문제다. 이를 해결하는 방법은 2가지가 있다. 1. 요청하고자 하는 사이트의 SSL인증서를 JDK에 추가 2. ssl 인증서 확인 절차를 무시하는 로직을 추가 요청하고자 하는 SSL 인증서를 다운받은 후 인증서를 추가하면 된다. sudo keytool -importcert -keystore ${JAVA_HOME}/lib/security/cacerts -storepass changeit -file {sslfile} Https 통신에서 ssl 인증서 무시 로직은 로컬환경인 경우에만 사용하는 것을 추천한다. 예제 코드는 아래와 같다.. 2023. 6. 16.
[Spring] 스프링 핵심 원리 - 기본편 (7) 이전 글 [Spring] 스프링 핵심 원리 - 기본편 (6) 의존관계 자동 주입 다양한 의존관계 주입 방법 생성자 주입 - 생성자 호출시점에 1회 호출 보장 - 불변, 필수 의존관계에 사용 - @Autowired(생성자가 딱 하나만 있으면 @Autowired 생략해도 자동 주입 - spring bean인 경우) 수정자 주입 - setter에 Autowired 적용 - 선택(required=false), 변경 의존관계에 사용 필드 주입 - @Autowired private MemberRepository memberRepository; - 외부에서 변경 불가능 -> setter 만들어야함 - 안쓰는게 좋으나 @Configuration 혹은 테스트 과정 중에는 가능 일반 메서드 주입 - 일반 메서드를 통해 주.. 2023. 3. 23.
[Spring] 스프링 핵심 원리 - 기본편 (6) 이전 글 [Spring] 스프링 핵심 원리 - 기본편 (5) 컴포넌트 스캔 컴포넌트 스캔과 의존관계 자동 주입 시작하기 @ComponentScan을 붙여주면 컴포넌트 스캔 가능 @Configuration도 @Component가 붙기 때문에 자동 등록된다. excludeFilters를 이용하여 Annotation 타입이 Configuration인 것들을 제거한다. @Autowired를 사용하면 자동 매핑된다. -> default로 타입이 같은 빈을 주입한다. @Component 동작 과정 @Autowired 동작 과정 각 구현 클래스에 @Component, @Autowired annotation 추가 후 아래와 같은 Configuration 파일 작성시 동작 가능 import org.springframew.. 2023. 3. 7.
[Spring] 스프링 핵심 원리 - 기본편 (5) 이전 글 [Spring] 스프링 핵심 원리 - 기본편 (4) 싱글톤 컨테이너 웹 애플리케이션과 싱글톤 스프링은 온라인 서비스 기술을 지원하기 위해 탄생 순수 DI 컨테이너는 AppConfig 요청마다 객체를 새로 생성한다. -> 해당 객체를 1개만 생성 후 공유하도록 설계한다. (싱글톤 패턴) import hello.core.AppConfig; import hello.core.member.MemberService; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; public class SingletonTest { @Test @DisplayName.. 2023. 3. 5.
[Spring] 스프링 핵심 원리 - 기본편 (4) 이전 글 [Spring] 스프링 핵심 원리 - 기본편 (3) 스프링 컨테이너와 스프링 빈 스프링 컨테이너 생성 ApplicationContext = 스프링 컨테이너, 인터페이스 스프링 컨테이너는 xml, 혹은 annotation 기반 자바 설정 클래스 AnnotationConfigApplicationContext는 ApplicationContext의 인터페이스 구현체 스프링 빈의 이름은 메소드 이름 사용, 직접 부여도 가능(유니크하도록) 빈 생성 후 의존 관계 주입 컨테이너에 등록된 모든 빈 조회 applicationContext에서 getBean을 사용하여 확인 BeanDefinition에서 역할별 bean 확인 가능 import hello.core.AppConfig; import org.junit.j.. 2023. 2. 11.
[Spring] 스프링 핵심 원리 - 기본편 (3) 이전 글 [Spring] 스프링 핵심 원리 - 기본편 (2) 스프링의 핵심 원리 이해2 - 객체 지향 원리 적용 1. 새로운 할인 정책 개발 추가 할인 정책 추가 RateDiscountPolicy, RateDiscountPolicyTest 파일 작성 import hello.core.member.Grade; import hello.core.member.Member; public class RateDiscountPolicy implements DiscountPolicy{ private int discountPercent = 10; @Override public int discount(Member member, int price) { if(member.getGrade() == Grade.VIP){ return.. 2023. 1. 28.
[Spring] 스프링 핵심 원리 - 기본편 (2) 이전 글 [Spring] 스프링 핵심 원리 - 기본편 (1) 스프링의 핵심 원리 이해1 - 예제 만들기 1. 프로젝트 생성 https://start.spring.io/ 에서 설정 후 spring boot 프로젝트 생성한다. 만들어진 프로젝트를 압축해제 후 Intellij에서 Import하여 확인한다. src/main/java/{group}/{Artifact}/{Artifate}Application을 run하여 정상 작동 여부를 확인한다. Intellij gradle 세팅 변경 2. 비즈니스 요구사항과 설계 3. 회원 도메인 설계 4. 회원 도메인 개발 Grade, Member - model public enum Grade { BASIC, VIP } public class Member { private L.. 2023. 1. 24.
반응형