SPRING 24

Spring JPA

용어 정리DBMS :  다수의 사용자가 DB에 접근 할 수 있도록 해주는 소프트웨어 도구               - MySQL, ORACLE, Postgres, NoSQLJDBC : JAVA에서 DB에 접속하기 위한 DBMS 인터페이스ORM(Object Relational Mapping) : 객체 지향 프로그래밍의 객체(클래스)와 관계형 데이터베이스의 데이터(테이블)를 자동으로 매핑 Java에서는 Hibernate, JPA가 있다.※ DB와 매핑된 Entity에 접근하므로 테이블 정규화가 잘 되어 있어야 한다  JPA : 자바 ORM 기술에 대한 명세 ( 특정 기능을 하는 라이브러리가 아닌, ORM을 어떻게 사용해야 하는지 정의하는 한 방법)Hibernate : JPA를 구현한 대표적인 프레임워크기본적..

SPRING 2025.02.13

[Spring Sequrity] 구동원리과 간략한 구현

구동원리클라이언트에서 HTTP requestsequrityFilterChain에서 HTTP 요청 가로챔(FilterChain 중 UsernamePasswordAuthenticationFilter에서)클라이언트 폼으로 받은 아이디/비밀번호를 sequrity 토큰에 맞추고UserNamePasswordAuthenticationToken객체를 생성한다.(FilterChain이 감지한 인증 요청의) 인증수행을 『ProviderManager(interface)』 에게 위임하며,여러 구현체(Provider)을 통해 인증을 수행 ProviderManager 중 『DaoAuthenticationProvider』 내부적으로 "UserDetailsService"를 호출UserDetailsService를 구현한 로직이 Use..

SPRING 2025.02.12

AOP (작성중)

정의□ AOP aspect oriented(관점지향) 프로그래밍, "어떤 로직"을 기준으로 핵심적인 관점(비즈니스 로직) 부가적인 관점(실행시간 측정, 트랜잭션, 로깅)을 기준으로 각각 모듈화 하겠다 □  흩어진 관심사 각 클래스에서 반복되는 기능 흩어진 관심사를 Aspect로 모듈화 하고 핵심적인 비즈니스 로직에서 분리하여 재사용하겠다는 것이 AOP의 목적      출처 : https://steady-coding.tistory.com/608#AOP%EB%9E%80? [Spring] AOP와 JDK Dynamic Proxy, CGLIBspring-study에서 스터디를 진행하고 있습니다. AOP란? AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍을 뜻한다. 관점 ..

SPRING 2025.01.31

Entity·DTO·VO와 사용범위, 변환방법

- EntityEntity 클래스는 실제 DB 테이블과 매핑되는 클래스데이터베이스 영속성의 목적으로 사용되는 객체이며, 때문에 요청(Request)이나 응답(Response) 값을 전달하는 클래스로 사용하는 것은 좋지 않다.서비스 클래스와 비즈니스 로직들이 Entity 클래스를 기준으로 동작하기 때문에 Entity 클래스가 변경되면 여러 클래스에 영향을 줄 수 있다   영속성이 있는 특징으로 Constructor(생성자) 또는 Builder를 사용한다      - 생성자(Constructor)를 이용해서 초기화하는 경우 불변 객체로 활용      -  Builder를 사용하면 멤버 변수가 많아지더라도 어떤 값을 어떤 필드에 넣는지 코드를 통해 확인할 수 있고        , 필요한 값만 넣는 것이 가능하..

SPRING 2025.01.11

Spring Bean과 빈 조회하기

ApplicationContext① 스프링 컨테이너(ApplicationContext, 객체를 담아두는 컨테이너) 생성ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);(※ AnnotationConfig ApplicationContext : 애노테이션 기반의 자바 설정 클래스로 스프링 컨테이너 생성.     ApplicationContext의 구현체이다) ② 스프링 빈 등록(1) @Configuration 으로 클래스를 구성 정보 지정(2) (1)에 @Bean 등록 (3) (1)의 구성정보를 활용하여 스프링 컨테이너 안, 스프링 빈 저장소에 스프링 빈 ((2)의 "빈 이름"과 "빈 객..

SPRING 2024.12.25

ApplicationContext(스프링 컨테이너)가 작동하는 과정

(1) 스프링 컨테이너는 @Configuration이 붙은 클래스를 설정(구성) 정보로 사용한다.외부 @Configuration으로 등록된 클래스에서 @Bean 으로 객체정보를 스프링 컨테이너에 등록.이렇게 등록된 객체를 스프링 빈이라고 한다.※ 스프링 빈은 @Bean 이 붙은 메서드의 이름을 스프링 빈의 이름으로 사용한다. (아래는 getDiscountPolicy가 스프링 빈 이름이 된다) @Bean(name="abc") 와 같이 셋팅할 수 있지만, 관례상 디폴트 네임을 사용한다.@Configuration // 구성 정보(설정 정보)public class AppConfig { @Bean // 스프링컨테이너에 등록 public static DiscountPolicy getDiscountPol..

SPRING 2024.12.22

IoC, DI와 컨테이너

IoC(Inversion of Control)프로그램의 제어 흐름을 사용자가 직접 제어하는 것이 아니라외부(프레임워크)에서 관리하는 것을 제어의 역전이라고 한다. DI를 가능하게 하는 기반 기술 『스프링이 제어의 역전을 구현하는 방법』스프링 프레임워크에서는 ApplicaionContext가 이 역할을 담당하며, @ComponentScan annotation은 지정된 패키지 내의 @Component annotation이 붙은 클래스를 자동으로 스캔하고 빈으로 등록한다. ※ 프레임워크 vs 라이브러리  " 프레임워크는 "프레임"이라는 말처럼 틀을 만들어두고 개발자로 하여금 사용 방법을 강제하는 것에 반해, 라이브러리는 개발자가 좀 더 자유롭게 사용할 수 있는 코드 조각 모음이다." -  프레임워크가 내가 작..

SPRING 2024.12.22

좋은 객체지향 프로그램과 스프링

스프링 : 여러가지 기술의 모음※ spring.io/projects 참고스프링 부트 : 아래 기술들을 편리하게 사용하게 해주는 것스프링 프레임워크 스프링 데이터 : 데이터베이스 CRUD를  편리하게 사용할 수 있도록 하는 기술 (JPA)스프링 세션 : 세션 기능을 편리하게스프링 시큐리티 : 보안스프링 Rest Docs : API문서와 테스트를 편하게 엮어서 문서화스프링 Batch스프링 Cloud 스프링 프레임 워크 핵심 기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타스프링 부트 : 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용 ㄴ 톰캣 같은 웹 서버를 내장 ㄴ 손쉬운 빌드 구성을 위한 starter 종속성 제공 : 라이브러리를 묶어서 종속 시킴 (하나만 땡기면 종속된 라이브러리..

SPRING 2024.12.16

[ajax] 키:값 배열 객체에 담고 배열로 순환 사용

서버 -> 클라이언트(JSP)'키 : 값' 형태인 JSON을 직관적이게 배열에 담으려면 컨트롤러에서 List> [쿼리 결과]  (1) Back 결과를 객체에 담아 배열에 담기let objArr =new Array; // 배열 선언$.ajax({ url : "/mbti", method : "post" }).done(function(result) { // Json 객체를 JS 객체에 담기 $(result).each(function(index, item) { let one = { no : item.no, name : item.name, mbti : item.mbti, }; ..

SPRING 2024.12.11