목록2024/08 (20)
ballqs 님의 블로그
Spring Security란?Spring 서버에 필요한 인증 및 인가를 위해 많은 기능을 제공해주며 웹 개발 과정에서 필수적인 사용자 관리 기능을 구현하는데 도움을 주는 Spring의 강력한 프레임워크이다.dependencies 추가implementation 'org.springframework.boot:spring-boot-starter-security'@Configuration를 통한 사용 방법@Configuration@EnableWebSecurity // Spring Security 지원을 가능하게 함public class WebSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) ..
스프링은 여러 특징이 있고 그중 하나가 AOP 라고 생각한다.AOP란?AOP(Aspect-Oriented Programming)는 '관전 지향 프로그래밍' 이라는 의미이고 메소드에 대해서 공통적으로 적용해줘야 하는 기능이 있다면 메소드마다 따로 코딩하면 중복코딩이 많아지기 때문에 AOP를 통해서 공통적으로 적용할수 있다. 대표적으로 사용되는 상황은 아래와 같다.로깅(Logging) : 애플리케이션의 전역적인 로깅을 구현할 때 AOP를 사용! 특정 메서드나 클래스에 대한 로그를 남기는 작업을 코드에 직접 삽입하는 대신, AOP를 통해 자동으로 로그를 기록할 수 있다. 이는 코드의 중복을 줄이고 유지보수를 쉽게 만든다.트랜잭션 관리(Transaction Management) : 트랜잭션 관리는 비즈니스 로직..
오늘은 강의를 들으면서 테스트 코드 작성하는 것에 대해서 메모했다. 기본적인 테스트 코드 작성 방법MyMath.java 코드 작성public class MyMath { public int calculateSum(int[] numbers) { int sum = 0; for (int number : numbers) { sum += number; } return sum; }} 테스트 코드 작성public class MyMathTest { private MyMath math = new MyMath(); @Test void calculateSum_ThreeMemberArray() { // Absence o..
오늘 풀어본 문제는 프로그래머스의 점 찍기 라는 문제를 풀어보았다.애초에 어떻게 접근해야할지 감도 못잡고 있다가 같이 공부중인 분이 힌트를 줘서 진행이 가능해졌다.문제 설명이 문제는 x축과 y축이 직교하는 좌표명면에서 k 값과 d 값이 주어지면 다음과 같이 점을 찍는다.원점(0, 0)으로부터 x축 방향으로 a*k(a = 0, 1, 2, 3 ...), y축 방향으로 b*k(b = 0, 1, 2, 3 ...)만큼 떨어진 위치에 점을 찍습니다.원점과 거리가 d를 넘는 위치에는 점을 찍지 않습니다.이는 좌표명면에 d 반지름의 원안에 k라는 간격만큼 점을 얼마나 찍을수 있는지 알아보기 위한 문제이다.제한 조건1 ≤ k ≤ 1,000,0001 ≤ d ≤ 1,000,000입출력 예kdresult2461526풀이과정주..
DB에 데이터를 저장해야하는 일이 있을때 대용량으로 데이터를 넣어야하는 경우가 있다면 JPA에서는 매번 하나하나 Insert문을 만들어서 실행시키고 있을 것이다. 이건 대용량으로 insert 하는것에 매우 적합하지 않은 방법이다.SQL에서는 insert 에 values 를 연달아 쓰는 방법이 바로 Bulk Insert 방법이다.그렇게 글 내용대로 3가지를 비교해보도록 하겠다. 참조글 : Spring JPA Save() vs SaveAll() vs Bulk InsertSave()@Test@Transactional@Rollback@DisplayName("Save() 테스트")void Test1() { long startTime = System.currentTimeMillis(); for (int ..
PasswordEncoder 암호화현재 듣고 있는 강의에서는 이러한 내용을 가르쳐 주었다.implementation 'org.springframework.boot:spring-boot-starter-security' security DI를 추가하고@Configurationpublic class PasswordConfig { @Bean public PasswordEncoder passwordEncoder() { // Hash 함수 비밀번호를 암호화해줌 // 해당 메서드를 사용해서 비밀번호를 encoding하는 것 return new BCryptPasswordEncoder(); }} PasswordEncoder를 수동적으로 bean등록하여 사용 하는 방식..
Spring을 이용하여 Naver Open API를 사용하려면 우선 아래사이트에 접근해야한다.https://developers.naver.com/products/intro/plan/ https://developers.naver.com/products/intro/plan/ developers.naver.com애플리케이션 등록하기 등록하기 화면에서 작성해야하는 내용들이 있다.애플리케이션 이름 , 사용 API , 비로그인 오픈 API 서비스 환경 등이 있으며 아래와 같이 작성했다.등록이 완료되면 Client ID와 Client Secret를 발급받는다.다만 중요해서 이미지를 잘라서 보여주겠다.애플리케이션 사용하기출처 :https://developers.naver.com/docs/serviceapi/search..
JWT란?Json 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim기반의 Web Token이다.토큰의 한 종류라고 생각하면 된다. 일반적으로 쿠키 저장소를 사용하여 JWT를 저장한다.JWT 사용이유기본적으로 클라이언트가 많을 경우 세션의 경우는 아래와 같이 사용된다.Session storage가 모든 Client의 로그인 정보 소유하고 있기 때문에 모든 서버에서 모든 Client의 API 요청을 처리한다.단! 이렇게 처리 될 경우 Session storage에 많은 접근이 있어서 과부하가 올 확률이 높다.그렇게 먹통이 되면 모든 서버가 동작이 안되게 처리되는 것이다. 로그인 정보를 Server에 Session에 저장하지 않고 Client에 로그인 정보를 JWT로 HS256인코딩 하여 저장하며 JW..
DFS 알고리즘에는 꼭 재귀 메서드를 호출하는게 아닌 Stack이나 Queue를 활용하는 방법도 있다고 한다. 해당 방식으로 풀게된 문제는 프로그래머스의 전력망을 둘로 나누기이다.문제 설명n개의 송전탑이 전선을 통해 하나의 트리 형태로 연결되어 있고 여기서 하나의 전선을 끊어서 현재의 전력망 네트워크를 2개로 분할하는 문제이다.단! 두 전력망이 가지게 되는 송전탑의 개수를 최대한 비슷하게 맞추고자 한다.제한사항n은 2 이상 100 이하인 자연수입니다.wires는 길이가 n-1인 정수형 2차원 배열입니다.wires의 각 원소는 [v1, v2] 2개의 자연수로 이루어져 있으며, 이는 전력망의 v1번 송전탑과 v2번 송전탑이 전선으로 연결되어 있다는 것을 의미합니다.1 ≤ v1 전력망 네트워크가 하나의 트리 ..
JPA란?Java ORM(Object-Relational Mapping)기술의 대표적인 표준 명세이다. JPA는 애플리케이션과 JDBC 사이에서 동작된다JPA를 사용하면 DB 연결 과정을 직접 개발하지 않아도 자동으로 처리해준다.또한 객체를 통해 간접적으로 DB 데이터를 다룰 수 있기 때문에 매우 쉽게 DB 작업을 처리가 가능하다. 하이버네이트(Hibernate)란?JPA 는 표준 명세이고, 이를 실제 구현한 프레임워크 중 사실상 표준이 하이버네이트이다.스프링 부트에서는 기본적으로 ‘하이버네이트’ 구현체를 사용 중이다.영속성 컨텍스트란?Persistence를 객체의 관점으로 해석해 보자면 ‘객체가 생명(객체가 유지되는 시간)이나 공간(객체의 위치)을 자유롭게 유지하고 이동할수 있는 객체의 성질’을 의미한..