소프트웨어 및 프로그래밍/Spring
-
Spring-Security소프트웨어 및 프로그래밍/Spring 2025. 2. 13. 18:23
spring-security를 통해 로그인이 되는 방식이 궁금했다.spring-security에서는 어떻게 로그인 처리가 될까? 1. Spring Security 설정(SecurityConfig) @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.formLogin(loginForm -> loginForm // 커스텀 form 방식 로그인 사용 .loginPage("/login") .defaultSuccessUrl("/index", true) ..
-
Spring JPA에서 연관관계 맵핑소프트웨어 및 프로그래밍/Spring 2025. 1. 11. 01:06
JPA는 데이터베이스의 테이블 간의 관계를 객체들 간의 관계로 추상화 해준다.JPA에서는 @Entity라는 어노테이션을 통해 객체를 하나의 테이블로 형상화할 수 있다. 그런데 테이블간의 관계는 객체간 관계와 동일하지 않기 때문에 연관관계를 이해하고 이를 적용해야 한다. 아래에 아주 간단한 예시를 통해 이러한 연관관계를 이해해 본다. 그림1과 같은 ERD가 있다. Order: 주문 정보가 담긴 테이블OrderItem: 주문에 포함된 상품 정보Delivery: 주문의 배송 정보 Order는 OrderItem과 1대 다 관계로 OrderItem이 Order의 id를 FK로 가지고 있다. 즉, OrderItem 측에서 order_id에 대한 조작이 가능한 '주인'이다. 그래서 Order와 OderItem을 ..
-
Spring(벡엔드)가 최종적으로 제공하는 것소프트웨어 및 프로그래밍/Spring 2024. 10. 14. 19:04
Spring 혹은 일반 벡엔드 개발자가 최종적으로 제공하는 것1. static 응답 - file, image, string...2. Http api 응답 - json3. 동적 응답 - 동적으로 Html 생성 더 알아둘 것두 가지 렌더링SSR - 서버 사이드 렌더링 동적 응답CSR - 클라이언트 사이드 렌더링자바스크립트를 사용해서 웹 브라우저에서 동적으로 생성해서 적용. ex) 네이버 지도동작 방식웹브라우저 >> 서버웹브라우저 sample.htmlHTML 내용X자바스크립트 링크웹브라우저 >> 서버Javascript 클라이언트 로직 요청HTML 렌더링 코드웹브라우저 >> 서버HTTP API 데이터 요청웹브라우저 Json 데이터 응답
-
Spring-Bean Container에 대한 예제와 이에 대한 후기소프트웨어 및 프로그래밍/Spring 2024. 10. 14. 16:18
예제에 대한 다이어그램은 아래와 같다SampleService 인터페이스와 ServiceA 인터페이스가 존재하고 SampleService의 구현체 SampleServiceImpl와 ServiceA의 구현체 ServiceAImpTypeOne, ServiceAImplTypeTwo 존재한다.SampleService에 대한 구동은 SampleServiceImpl에 구현되어 있고 SampleServiceImpl는 ServiceA를 멤버로 소유하고 있다. SampleServiceImpl의 멤버인 ServiceA에 대해 구현체를 new를 통해 바로 할당해서 사용해도 되지만, 아래와 같이 SampleServiceImpl이 ServiceA의 구현체에 의존하기 보다는 인터페이스인 ServiceA에 대해서만 의존하기 위해 코..
-
Spring SOLID 원칙소프트웨어 및 프로그래밍/Spring 2024. 9. 24. 15:08
Spring은 OCP, DIP 기능 지원 DI - 의존관계, 의존성 주입 - 클라이언트 코드 변경 없이 SOLID SRP - 단일 책임 원칙 무언가 코드 상의 '변경'이 있을 때, 이 파급 효과가 적으면 이 원칙을 잘 따른것 예) MVC를 통해 model와 control, view를 각각의 역할을 분리 OCP - 개발-폐쇄 원칙 주관적으로 가장 중요한 원칙 소프트웨어 요소는 확장에는 열려있고 변경에는 닫혀있어야함 >> 다형성 MemberRepository m = new MemoryMemberRepository(); // 기존 MemberRepository m = new JdbcMemberRepository(); // 변경 확장을 하려면 코드를 '변경'해야만 함 이를 자동으로 해주려면 누군가가 개입이 ..