본문 바로가기
반응형

Develop239

[Spring Security] 초간단 로그인 만들기 이전부터 아주 천천히 진행하고 있던 토이 프로젝트의 로그인 기능을 드디어 구현했다. 이번 달 ~ 다음 달 안에는 종료되어야 마음이 편할텐데 가능하..겠지..?😂 본 포스팅에서는 복잡한 로직 다 빼고 Spring Security를 적용만 해보는 과정을 담았다. 1. 준비 🔻 이전 글 참고: https://yeonyeon.tistory.com/185 [Spring Security] 스프링 시큐리티 간단 적용기 본 글은 토이 프로젝트에 Spring Security를 적용하는 과정에 대해 포스팅한다. Spring Security에 관한 디테일한 이론 지식이나 동작 원리 등에 대해서는 생략한다. 1. 개요 Spring Security : J.. yeonyeon.tistory.com 2. 동작 방식 먼저 Sprin.. 2022. 3. 7.
[Java] 접근 권한을 최소화해야 하는 이유 이 포스팅에 들어가기 앞서 잘 설계된 컴포넌트란 무엇인가?에 대해서 생각해보도록 하자. 우리가 컴포넌트를 설계할 때 중요한 것이 뭘까? 어떤 컴포넌트를 잘 설계되었다고 표현할까? ✨ 잘 설계된 컴포넌트 클래스 내부 데이터와 구현 정보를 외부로부터 잘 숨긴 컴포넌트 서로의 내부 동작 방식을 모른채 API를 통해 다른 컴포넌트와 소통 👉 결국은 정보 은닉, 캡슐화가 중요한 포인트라고 볼 수 있다. 🔻 정보 은닉이란? 더보기 : 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통해 접근을 허용하는 것 정보 은닉으로 인한 장점 여러 컴포넌트를 병렬로 개발 가능 👉 시스템 개발 속도↑ 각 컴포넌트를 더 빨리 파악할 수 있고 교체 부담도 적음 👉 시스템 관리 비용 ↓ 성능 최적화에 도움 소프트웨어의 재사용성 ↑.. 2022. 3. 6.
[Java] Predicate란? 🤔 서론 우테코 오늘자 강의에서 BiPredicate라는 개념을 처음 들어보았다. Predicate란 무엇인지, 언제 사용하는 것인지 그리고 내 코드에 적용하는 과정까지를 담아본다. 생각보다 어렵지 않다. 설명 안읽고 예제 코드만 봐도 바로 이해할 수 있을듯 📚 Predicate란? argument를 받아 boolean 값을 반환하는 함수형 인터페이스 functional method: test() 🔻 함수형 인터페이스란? 더보기 = SAM interface; Single Abstract Method Interface : 1개의 추상 메소드를 갖고 있는 인터페이스 ➕ default나 static 메소드의 제한 X @FunctionalInterface 어노테이션 사용 ➕ 없어도 동작하지만 함수형 인터페이스 .. 2022. 3. 4.
[IntelliJ] 플러그인 직접 설치하기 IntelliJ에서 플러그인을 하나 설치하려 했는데 실패했다...😢 Settings - Plugins - Marketplace에서 검색을 해보아도 플러그인 검색 자체가 안된다. 파일을 가져와서 직접 설치하는 방법이 있다기에 도전해보았다. 1. Plugin 파일 다운받기 https://plugins.jetbrains.com/plugin 요 사이트에 들어가면 플러그인들을 검색할 수 있다. JetBrains Marketplace Welcome to the JetBrains Marketplace plugins.jetbrains.com 원하는 플러그인에 들어가서 Versions 탭에 들어가면 zip 파일을 다운받을 수 있다. 유의할 점은 자신의 IntelliJ에 맞는 버전을 찾아야한다. 최신이 좋겠지~하면서 최신.. 2022. 3. 3.
[JUnit5] 중복되는 테스트 코드 줄이기 목차 서론 @ParameterizedTest란? 예제 코드 -@ValueSource 파라미터를 여러개 받고 싶다면? - @CsvSource 사용자 정의 클래스를 파라미터로 넣고 싶다면? - @MethodSource 테스트 코드에 설명 덧붙이기 👀 서론 테스트 코드를 작성하다 보면 코드가 반복되는게 느껴질 때가 있다. 개인적으로 나는 객체가 잘 생성되는지 확인할 때도 경계값 중간값까지 최소 3번은 테스트하는 편이다. 값이 바뀔때마다 코드를 복붙하는게 불필요하게 느껴져서 테스트 코드 내부에 메소드를 따로 만들기도 했었는데... 우테코를 통해 @ParameterizedTest라는 어노테이션을 알게 되었다. 💡 @ParameterizedTest란? 다양한 인수로 테스트를 여러번 실행할 수 있도록 해주는 어노테이.. 2022. 3. 2.
[Java] 인스턴스화 방지를 위해 private 생성자 이용하기 정적 메소드, 정적 필드만 담은 클래스는 때때로 유용하게 쓰일 수 있다. 사용하는 경우가 크게 세 가지가 있는데 예제를 통해 살펴보자. 📕 1. 기본 타입 값이나 배열 관련 메소드를 모은 클래스 ex: java.lang.Math, java.util.Arrays java.util.Arrays의 코드를 살펴보면 아래와 같다. public class Arrays { public static boolean isArray(Object o) { ...} public static Object[] asObjectArray(Object array) { ...} public static List asList(Object array) { ...} public static boolean isNullOrEmpty(T[] arr.. 2022. 2. 26.
[Java] EnumMap이란? 😏 개요 먼저 Enum에 대해 잘 모르면 아래 글을 먼저 읽어보길 바란다. https://yeonyeon.tistory.com/171 [Java] Enum에 대해 목차 1. Enum이란? 2. 사용 방법 3. 주요 메소드 4. Singleton과 Enum 1. Enum이란? 🤔 enumerance type = 열거형 JDK 1.5부터 생겨난 기능으로 열거체를 정의할 수 있는 클래스 비교 시 실제 값 뿐만 아니라.. yeonyeon.tistory.com Map을 선언했는데 구현체로 뭘 사용할지 고민이 들었다. 검색 중에 EnumMap이라는게 있길래 정리해본다. 🤩 EnumMap이란? Enum 타입만 key로 사용 가능한 특별한 Map Array를 이용하기 때문에 성능적으로 우수 해싱 과정이 필요 없어 Ha.. 2022. 2. 25.
[Java] ConcurrentModificationException 에러 ❗ java.util.ConcurrentModificationException 👉 객체를 동시에 수정하는 것이 불가능한데 동시 수정이 일어나는 경우를 감지 위 오류가 발생한 상황은 아래와 같다. public class Random { private static final List randomNumbers = new ArrayList(); static { for (int i = 1; i 2022. 2. 24.
[GitHub] Pull Request 충돌 해결하기 ❗ 문제 발생 내 작업 상황은 아래와 같다. 커밋내역들을 PR 요청 PR이 머지됨 1에 이어서 작업 3을 PR하려고 하니 충돌 충돌이 난 원인 🤔 A, B, C라는 커밋이 Pull Request를 통해 우테코 레포에 반영되었다. Pull Request는 A, B, C라는 커밋을 하나하나 반영되지 않고 여러 커밋들이 하나의 커밋으로 반영된다. 여기서 원래 작업하던 레포에서 D라는 커밋이 생겼다. 새로운 PR을 올릴 때 D만 요청하는게 아니라 A, B, C, D 모든 커밋 내역을 반영해달라고 요청이 간다. A, B, C를 반영한 ABC와 A, B, C 커밋이 충돌이 났다. 해결 방법 😮 충돌난 파일 직접 수정해서 해결 새로운 브랜치를 생성 후 리팩토링 다시 진행 충돌난 파일을 직접 수정하는 경우는 GitHu.. 2022. 2. 21.
반응형