본문 바로가기

java/Spring6

주저리주저리 스프링은 참 어렵다.매순간 새롭게 참 어렵다.특히 스프링 시큐리티가 그렇다.이거 좀 괜찮은 구조 같은데? 이해가 좀 되는데? 괜찮은 플로우인데? 싶다가도 다시 보면 모르겠다.그렇다고 또 여기저기 쑤시다보면 개판이 되버린다.의존성 관리도 참 어렵다.의도적으로 강한 의존성을 배제하려고 했음에도 불구하고 예상치 못한 부분에 묶여있는 경우가 있다.머리 회로가 묶이는 느낌이다.진짜 새삼 문득 어렵다.맞으면서 배우는게 가장 빠르긴 한데스프링 특성 때문인지 이게 뭐한테 언제 어떻게 맞는건지 구분이 안되어 더 어렵다.갈길이 멀다. 2025. 8. 29.
OAuth2 컨닝페이퍼 이야 도저히 이거 OAuth2 를 쌩으로 시작하려니 메소드들, 어노테이션이 뭔역할을 하는지 몰라서 컨닝페이퍼를 만들어 두려고 한다. 우선 시퀀스다이어그램부터 박아놓고 시작하겠다. 캬 길다... 다음은 소스코드 예제로 들어간다.// 예시http .authorizeHttpRequests(auth -> auth .requestMatchers("/", "/login**").permitAll() .anyRequest().authenticated() ) .oauth2Login(oauth2 -> oauth2 .userInfoEndpoint(userInfo -> userInfo .userService(oauth2UserService()) ) );각 함수의 .. 2025. 7. 29.
JpaRepository에 정의되지 않은 메소드 사용법 JPA 레퍼런스를 보았을 때 findAllBy... findBy...... get... 엄청 많았다.하지만 이것들만 가지고는 SQL의 where절 조건 걸어 조회하거나 업데이트 하는게 불가능해 보여서 추가로 조사를 진행했다. 메소드의 이름으로 조건을 줄 수 있다고 한다. 예를들면 레퍼런스에 findAllById 라는 항목이 있는데 Id가 고정된것이 아닌 유동적으로 변경이 가능하다.findAllById를 SQL로 바꿔보면SELECT * FROM {tableName} where ID;//만약 ID가 리스트 타입이라면SELECt * FROM {tableName} where ID in [{ListAttribute1}, {ListAttribute2}, ...];이런식으로 JPA가 쿼리문으로 작성하는 것 같다. 하.. 2024. 11. 19.
Spring Annotation 컨닝페이퍼 스프링에서 제공하는 주요 어노테이션 정리단순 데이터 뭉치로 빈약한 설명, 부정확할 가능성 있음컴포넌트 스캔 및 빈 등록 관련 어노테이션@Component : 일반적인 스프링 빈으로 등록할 때 사용@Service : 비즈니스 로직을 처리하는 클래스에 사용@Repository : DB와 연동되는 클래스에 사용@Controller, @Restcontroller : 웹 요청을 처리하는 클래스에 사용의존성 주입(DI) 관련 어노테이션@Autowired : 필드, 생성자, 메소드에 의존성을 주입할 때 사용@Qualifier : 같은 타입의 여러 빈 중에서 특정 빈을 선택할 때 사용.@Inject / @Resource : DI를 위한 다른 방식의 어노테이션(Jakarta 및 JSR-330 표준)으로@Autowired.. 2024. 10. 21.
Spring Bean 클래스들을 스프링 컨테이너에 스프링 빈으로 등록해서 애플리케이션을 실행한다는걸 알았다.그럼 모든 클래스를 등록해야 할까? 어떻게 등록해야 할까? 같은 의문들이 생겨서 GPT를 비롯하여 구글링 한 결과를 정리하려고 한다.  첫번째 의문에 대한 결과는 당연하게도스프링 컨테이너에 모든 빈을 등록하는것은 아니었다.자동으로 빈을 등록하고 생성해서 애플리케이션을 관리해주는것도 아니었다.이 부분이 쿠버네티스의 마스터노드 - 파드와 차이점이었다. 스프링 컨테이너에 빈을 등록하는 방법어노테이션 기반 등록 - @Component, @Service, @Repository, @Controller 같은 어노테이션을 클래스에 붙이면스프링이 해당 클래스들을 스캔해서 알아서 빈으로 등록해준다.Java 설정 클래스- @Configur.. 2024. 10. 21.
Spring Framework 기본 요소 개념 정리 응근히 사전에 알고 들어가야 할 용어들이 많지만 생소한 용어가 생각보다 적었다.가볍게 큰 틀을 이루는 개념 몇 가지를 가볍게 정리하겠다.어노테이션 (Annotation)코드에 메타데이터를 추가하는 방법. 컴파일러나 런타임 시점에 특정 동작을 하도록 지시하는 역할 순수 자바만 사용할 때에 어노테이션은 자주 써봐야 @Override 정도였는데 스프링같은 경우에는 수많은 어노테이션이 존재한다.자바와 직관적인 차이점중 하나라고 생각한다. 스프링 빈 (Spring Bean)이름만 보면 자바 빈이 떠오른다.빈이라는 이름은 같지만 개념은 매우 다르다.스프링 컨테이너에 의해 관리되는 객체를 빈, 스프링 빈 이라고 한다. 개발자가 직접 생성하고 관리하지 않아도 스프링이 알아서 객체의 라이프사이클을 관리해준다.쿠버네티스의.. 2024. 10. 21.