본문 바로가기

오픈소스15

Spring-Security 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) .. 2025. 2. 13.
Spring JPA에서 연관관계 맵핑 JPA는 데이터베이스의 테이블 간의 관계를 객체들 간의 관계로 추상화 해준다.JPA에서는 @Entity라는 어노테이션을 통해 객체를 하나의 테이블로 형상화할 수 있다. 그런데 테이블간의 관계는 객체간 관계와 동일하지 않기 때문에 연관관계를 이해하고 이를 적용해야 한다. 아래에 아주 간단한 예시를 통해 이러한 연관관계를 이해해 본다.  그림1과 같은 ERD가 있다.  Order: 주문 정보가 담긴 테이블OrderItem: 주문에 포함된 상품 정보Delivery: 주문의 배송 정보 Order는 OrderItem과 1대 다 관계로 OrderItem이 Order의 id를 FK로 가지고 있다. 즉, OrderItem 측에서 order_id에 대한 조작이 가능한 '주인'이다. 그래서 Order와 OderItem을 .. 2025. 1. 11.
Spring(벡엔드)가 최종적으로 제공하는 것 Spring 혹은 일반 벡엔드 개발자가 최종적으로 제공하는 것1. static 응답 - file, image, string...2. Http api 응답 - json3. 동적 응답 - 동적으로 Html 생성 더 알아둘 것두 가지 렌더링SSR - 서버 사이드 렌더링 동적 응답CSR - 클라이언트 사이드 렌더링자바스크립트를 사용해서 웹 브라우저에서 동적으로 생성해서 적용.  ex) 네이버 지도동작 방식웹브라우저 >> 서버웹브라우저 sample.htmlHTML 내용X자바스크립트 링크웹브라우저 >> 서버Javascript 클라이언트 로직 요청HTML 렌더링 코드웹브라우저 >> 서버HTTP API 데이터 요청웹브라우저 Json 데이터 응답 2024. 10. 14.
Spring-Bean Container에 대한 예제와 이에 대한 후기 예제에 대한 다이어그램은 아래와 같다SampleService 인터페이스와 ServiceA 인터페이스가 존재하고 SampleService의 구현체 SampleServiceImpl와 ServiceA의 구현체 ServiceAImpTypeOne, ServiceAImplTypeTwo 존재한다.SampleService에 대한 구동은 SampleServiceImpl에 구현되어 있고 SampleServiceImpl는 ServiceA를 멤버로 소유하고 있다. SampleServiceImpl의 멤버인 ServiceA에 대해 구현체를 new를 통해 바로 할당해서 사용해도 되지만, 아래와 같이 SampleServiceImpl이 ServiceA의 구현체에 의존하기 보다는 인터페이스인 ServiceA에 대해서만 의존하기 위해 코.. 2024. 10. 14.
binary file의 이유로 grep이 파일 전체를 검색하지 못할때 로그에 특정 문자열을 검색을 위해 grep을 사용하는데, 전체 로그 상에서 발견된 로그가 grep을 통해 추출한 로그에서는 발견 안 된 케이스가 존재했다. 추출한 파일에는 binary file ~ matches란 짧은 로그가 적혀 있었다. 이 때 어떻게 전체 파일을 서치할 수 있을까? grep에서 16진수로 표현된 문자열을 만나게 되면 검색을 하는 도중 중간에 멈추어 버린다. 그리고 그 이전에 서치했던 결과물만 결과로 넘어가 버린다. 이럴 경우 '--text' 옵션을 넣어주면 된다grep --text  : 이진 파일을 텍스트 파일로 간주하고 검색을 수행하도록 지시 이렇게 하면 이진 파일도 텍스트 파일로 간주하여 지정한 패턴을 계속해서 수행하여 전체 파일을 검색할 수 있다. 2024. 10. 7.
Spring SOLID 원칙 Spring은 OCP, DIP 기능 지원 DI - 의존관계, 의존성 주입 - 클라이언트 코드 변경 없이 SOLID SRP - 단일 책임 원칙 무언가 코드 상의 '변경'이 있을 때, 이 파급 효과가 적으면 이 원칙을 잘 따른것 예) MVC를 통해 model와 control, view를 각각의 역할을 분리 OCP - 개발-폐쇄 원칙 주관적으로 가장 중요한 원칙 소프트웨어 요소는 확장에는 열려있고 변경에는 닫혀있어야함 >> 다형성 MemberRepository m = new MemoryMemberRepository(); // 기존 MemberRepository m = new JdbcMemberRepository();   // 변경 확장을 하려면 코드를 '변경'해야만 함 이를 자동으로 해주려면 누군가가 개입이 .. 2024. 9. 24.