SpringBoot 15

SpringBoot - JWT 필터를 활용한 전역 인증 구현

1. JWT 기반 인증의 흐름JWT를 사용한 인증 과정은 다음과 같이 진행됩니다:사용자가 로그인하면 서버는 사용자 정보를 검증한 후, JWT 토큰을 생성하여 클라이언트에 반환합니다.클라이언트는 이후 요청 시마다 이 JWT를 헤더에 포함하여 서버로 전달합니다.서버는 전달받은 JWT의 유효성을 검증한 후 요청을 처리합니다.2. 프로젝트 환경 설정Spring Boot 3.xDependencies: Spring Web, Spring Security, jjwt(JSON Web Token), LombokMaven Dependency 추가: io.jsonwebtoken jjwt-api 0.11.5 io.jsonwebtoken jjwt-impl 0.11.5 io.jsonwebtok..

SpringBoot 2024.11.26

SpringBoot -비밀번호 암호화 및 사용자 인증하기

1. 프로젝트 설정Maven 의존성 추가먼저, 비밀번호 암호화를 위해 Spring Security 의존성을 추가합니다. org.springframework.boot spring-boot-starter-security org.springframework.boot spring-boot-starter-web  2. 비밀번호 암호화(Bcrypt)Spring Security에서 제공하는 BCryptPasswordEncoder를 사용해 비밀번호를 암호화합니다.PasswordUtil 클래스비밀번호 암호화 및 검증 유틸리티를 작성합니다.import org.springframework.security.crypto.bcrypt.BC..

SpringBoot 2024.11.24

SpringBoot - JWT 구현 (기초)

JWT(Json Web Token)- 서버와 클라이언트 간 인증 및 정보 교환을 위해 널리 사용되는 토큰 기반 인증 방식1. 프로젝트 환경 설정JWT를 구현하려면 필요한 라이브러리를 추가해야 합니다.Maven 의존성 추가pom.xml에 아래와 같은 의존성을 추가합니다. org.springframework.boot spring-boot-starter-web io.jsonwebtoken jjwt-api 0.11.5 io.jsonwebtoken jjwt-impl 0.11.5 io.jsonwebtoken jjwt-jackso..

SpringBoot 2024.11.23

SpringBoot - SLF4J

1. slf4j란?slf4j(Simple Logging Facade for Java)는 다양한 로깅 프레임워크 (예: Logback, Log4j, java.util.logging 등)와 통합될 수 있는 추상화 레이어를 제공하는 라이브러리입니다. 이를 통해 코드에서 로깅 API를 통일시켜 로깅 백엔드를 교체하더라도 코드의 변경 없이 일관되게 사용할 수 있습니다.2. slf4j 의존성 추가하기Spring Boot 프로젝트에서 slf4j를 활용하기 위해 기본적으로 Logback이 포함되어 있습니다. 하지만 프로젝트에서 명시적으로 추가하고자 한다면 pom.xml에 의존성을 추가할 수 있습니다. org.slf4j slf4j-api 1.7.36 ..

SpringBoot 2024.11.17

SpringBoot - 백엔드 개발할 때 알아두면 좋은 기술 스택

1. 프로젝트 관리: Maven 또는 GradleSpring Boot 프로젝트는 Maven과 Gradle 중 하나를 빌드 도구로 선택합니다.Maven: 직관적인 XML 구조와 방대한 커뮤니티 지원으로 안정적인 환경 제공.Gradle: 빌드 속도가 빠르고, 직관적인 DSL을 통해 설정 간소화 가능.선택 팁: 프로젝트 규모와 팀의 경험에 따라 도구를 결정하세요. Maven이 익숙한 팀이라면 Maven을, 최신 트렌드와 속도를 중요시한다면 Gradle을 추천합니다. 2. 데이터베이스: JPA/Hibernate + QueryDSLJPA/Hibernate: 데이터베이스 ORM(Object-Relational Mapping) 도구로, 데이터베이스 작업을 자바 객체와 매핑하여 생산성을 향상시킵니다.QueryDSL: ..

SpringBoot 2024.11.16

SpringBoot - Could not find artifact mysql:mysql-connector-java:pom:unknown in mvn2s [에러]

분명히 이전에 포스팅했던 JPA 방식대로 설치를 했는데타이틀과 같은 에러가 발생..ㅎ허허 무슨 일인지 계속해서 코드를 하나씩 확인해봐도 문제가 해결되지 않음..그래서 아래 코드인 mysql-connector-java를 지우고 해보니 또 JpaRepository에서 불러오는게 안됨 ㅋㅋ mysql mysql-connector-java그래서 여기저기 확인을 해봤는데도 해결이 안돼서그냥 pom.xml에서 자동완성을 시키면서 짱구를 굴리고 있다가갑자기 version 태그가 생기길래 뭔가하고 실행해보니그냥 갑자기 됨... ㅋㅋ그래서 좀 더 이유를 조사해보니그냥 가장 상단에 포스팅에서 말해주고 있는데 내가 확인을 대충해서 못찾았던거... 하으

SpringBoot 2024.09.24

SpringBoot - Consider defining a bean named 'entityManagerFactory' in your configuration [에러]

하으.... 이런 에러로 몇 시간을 날린건지...분명히 설치도 원래 했던대로인데 어떤 문제이고 어떻게 해결해야 하지... 싶었는데그냥 dependency에 설치된 애들끼리 상충되어서 에러가 발생하는 듯하다는포스팅을 확인하게 되어 .m2의 repository에 있는 모든 파일을 삭제 후다시 maven에서 Reload All Maven Projects를 하니아주 말끔하게 해결... ㅋㅋ

SpringBoot 2024.09.24

SpringBoot - stream, reChart (2024.05.19)

2024.05.19(일) 1. stream 이전 인턴 과정에서 forEach를 계속 사용해서 배열에 담아준 다음 전달하는게 너무 귀찮아서 stream메서드를 사용해서 처리했는데 한 번 더 정리하는 겸 해서 작성. return으로 전달할 곳에 배열을 stream() 메서드 사용 후  map() 안에 각 요소를 뽑고 난 다음 변경할 Dto 타입으로 builder로 감싸고 build() 이후 .collect(Collectors.toList()) 메서드 처리하면 된다.  여기서 collect() 메서드는 stream()에서 요소를 수집하는 최종 연산이며, 스트림의 요소를 수집해서 컬렉션 형태로 반환하고, Collector 인터페이스를 구현한 객체를 인수로 받음. 그리고 Collectors.toList() 메서드..

SpringBoot 2024.05.19

SpringBoot - findAllBy, addAll, Between, Cors (2024.05.16)

2024.05.16(목)  1. findAllBy 해당 테이블의 PK가 아닌 다른 컬럼에 해당하는 모든 데이터를 조회할 때 사용. 여기서 만약 해당 테이블에 FK가 있고 FK에 해당하는 특정 컬럼으로 조회할 때는 컬럼_컬럼 이렇게 하는데 예시는 아래와 같으며 정정해야할 정보가 있다면 댓글에 남겨주시면 감사하겠습니다. 그리고 지난 인턴과정에서 PK가 아닌 특정 컬럼으로 조회하기 위해 findBy 또는 findAllBy로 조회하려 했는데 안된 경험이 있다. 이유는 컬럼명을 스네이크 케이스로 컬럼명을 작성해서 조회가 안됐으며 JPA를 위해선 보통 카멜 케이스로 작성한다고 한다. 2. addAll 구현하려던 것이 프론트에서 특정 일자를 String 타입으로 서버에 전달하면 StockRepository에 있는 모..

SpringBoot 2024.05.17

SpringBoot - @Schedulder, @Data, Builder (2024.05.15)

2024.05.15(수)  1. 스케줄러 main에 @EnableScheduling 어노테이션을 적용 후 controller에서 @Scheduled 어노테이션의 cron 속성을 활용하여 주식장이 열리는 시간과 유사하게 우선은 월요일에서 금요일 오전 9-15:30분까지 조회하되 4분 주기로 조회하도록 코드를 작성// controller@Scheduled(cron = "0 */4 9-14 * * 1-5")@Scheduled(cron = "0 0-30/4 15 * * 1-5")public void getStockScrapScheduled() throws IOException{ stockService.saveStockService();}// servicepublic void saveStockService(..

SpringBoot 2024.05.15