지난 시간에 어떤 URI로 요청이 들어와도 무조건 login 페이지가 뜨는 마법을 겪고 글을 끝냈습니다. 이 매직에서 벗어나려면 SecurityConfig 클래스를 만들어서 configuration 수정을 해줘야 합니다. 이번 시간에는 그 방법에 대해서 다뤄보도록 하겠습니다. 로그인 페이지 사용하지 않기 @Configuration 어노테이션은 작성하지 않으셔도 됩니다. 일반적으로 패키지랑 이름을 제대로 지켜주면 스프링이 알아서 이 클래스 파일이 Config 파일이구나~ 하고 인지합니다. 간혹 인식하지 못하는 경우에만 추가해주시면 되겠습니다. 우리를 괴롭히는 로그인 페이지를 사용하지 않을거라면 위 두 가지 방식으로 제어할 수 있습니다. 첫 번째는 모든 요청에 대해서 권한을 허용하는 방법이고 두 번째는 로그..
분류 전체보기
간단하게 사용자 이름(닉네임)과 비밀번호 정보를 가지고 회원가입 기능을 구현해보겠습니다. 저번에 포스팅하다가 끊긴 게시판 만들기와 같은 프로젝트입니다. 프론트엔드는 이미 따로 구성해놓으셨다는 가정하에 진행하겠습니다. 저는 디자인을 잘 몰라서.. 프론트엔드 부분을 대충 구성해놓았기에 공유해드리기도 민망해서 그렇습니다. 제일 먼저 spring security를 사용하려면 dependency를 추가해줘야겠죠. build.gradle에 다음과 같은 의존성을 추가해줍니다. implementation 'org.springframework.boot:spring-boot-starter-security' 자 기본 설정(?)은 완료가 되었으니 실질적인 코드 작성을 해보겠습니다. 일단 이번에도 JPA를 가지고 만들게요. U..
2021.04.16 - [Java] - [JAVA] 자바 라이브 스터디 4주차 과제 1 : 과제 참여율 구하기 [JAVA] 자바 라이브 스터디 4주차 과제 1 : 과제 참여율 구하기 Github API를 이용해서 참여자들의 참여율을 계산하는 과제였습니다. 과제 요구사항을 그대로 가져와서 한 번 살펴보겠습니다. github.com/whiteship/live-study/issues/4 4주차 과제: 제어문 · Issue #4 · whit.. coding-nyan.tistory.com 이 포스팅에서 저는 private method를 테스트 했어야 했고 Reflection이라는 방식을 이용해서 조금은 복잡하게 테스트를 진행했습니다. 이렇게까지 복잡한 것을 보면 애초에 private method는 테스트 대상이 ..
이진 트리 계층 구조인 트리의 자식이 left, right 둘로 이루어진 형태를 이진 트리라고 합니다. 이진 트리를 구성하고 dfs와 bfs로 탐색하는 예제를 작성하는 것이 이 포스팅의 목표입니다. 그림에서 초록 원들을 각각 노드라고 부릅니다. 각 노드들이 가지를 뻗듯이 연결되어 있으니(같은 이유로 트리라는 이름이 붙여졌습니다.) Node의 값과 연결된 노드들의 정보가 필요하겠죠. 즉 Node 클래스에는 다음과 같은 필드가 필요합니다. public class Node{ int value; Node left; Node right; ... } 생성자는 직접 만들어보세요. DFS DFS는 깊이 우선 탐색이라고 부릅니다. 트리에서의 깊이는 맨 위에 있는 노드(루트 노드)로 부터 특정 노드까지의 길이를 깊이라고 ..
클래스란? 드디어 클래스에 대해서 다루게 되었군요. 클래스란 객체를 생성하기 위한 상태와 행동을 정의하는 설계도입니다. C언어를 배우신 분들이라면 배열 다음에 구조체라는 것을 배우게 되죠. 배열은 같은 자료형 여러개의 묶음이라면 구조체는 여러 자료형을 묶어서 사용할 수 있습니다. 클래스 또한 구조체처럼 여러 자료형을 담아서 사용할 수 있고, (상태) 거기에 메서드(행동)까지 정의할 수 있습니다. 필드(멤버 변수) 필드는 해당 클래스의 속성을 나타냅니다. Student 클래스라면 학과 정보, 학번, 이름등이 필드에 넣을 수 있겠죠. 필드에서도 static을 붙이는 경우에는 클래스 변수라고 부르고 일반적인 변수는 인스턴스 변수라고 부릅니다. 2021.03.10 - [Java] - [java] 변수 [java..
과제 2. LinkedList를 구현하세요. LinkedList에 대해 공부하세요. 정수를 저장하는 ListNode 클래스를 구현하세요. ListNode add(ListNode head, ListNode nodeToAdd, int position)를 구현하세요. ListNode remove(ListNode head, int positionToRemove)를 구현하세요. boolean contains(ListNode head, ListNode nodeTocheck)를 구현하세요. 과제 3. Stack을 구현하세요. int 배열을 사용해서 정수를 저장하는 Stack을 구현하세요. void push(int data)를 구현하세요. int pop()을 구현하세요. 과제 4. 앞서 만든 ListNode를 사용해서..
Github API를 이용해서 참여자들의 참여율을 계산하는 과제였습니다. 과제 요구사항을 그대로 가져와서 한 번 살펴보겠습니다. github.com/whiteship/live-study/issues/4 4주차 과제: 제어문 · Issue #4 · whiteship/live-study 목표 자바가 제공하는 제어문을 학습하세요. 학습할 것 (필수) 선택문 반복문 과제 (옵션) 과제 0. JUnit 5 학습하세요. 인텔리J, 이클립스, VS Code에서 JUnit 5로 테스트 코드 작성하는 방법에 익숙해 github.com 과제 1. live-study 대시 보드를 만드는 코드를 작성하세요. 깃헙 이슈 1번부터 18번까지 댓글을 순회하며 댓글을 남긴 사용자를 체크 할 것. 참여율을 계산하세요. 총 18회에 중..
Gradle 프로젝트 의존관계를 추가해줄때 implementation으로도 추가가 가능하고 compile로도 추가가 가능합니다. 자꾸 혼용해서 쓰다보니 무슨 차이점이 있는지 궁금해서 찾아보게 되었습니다. 한 줄 요약 implementation > compile compile은 왜 사라졌는가? 최신 버전 Gradle 공식 문서에서는 compile 옵션에 대해서 언급조차 하지 않습니다. 과거 문서를 찾아본 결과를 토대로 설명드리겠습니다. A
JUnit 5를 이용한 테스트 코드 작성법에 대해서 알아봅시다. JUnit 5는 자바 8 버전 이상부터 지원합니다. 따라서 프로젝트 자바 버전을 확인하고 따라와 주셨으면 합니다. 참고로 해당 포스팅은 김영한님의 스프링 핵심 원리 강의에서 사용하는 예제로 설명합니다. Spring project Spring project를 spring.io에서 직접 만드는 경우 JUnit 5와 관련한 dependency가 자동으로 추가됩니다. 저도 자동으로 설정된 버전을 사용하기에 추가 방법을 따로 설명하지 않겠습니다. 테스트 코드란? 그동안 작성한 코드가 제대로 돌아가는지 검증하기 위해 작성하는 코드들을 테스트 코드라고 부릅니다. 자 클라이언트가 회원 서비스를 통해서 회원 가입을 하면 저장소로 저장되는 일련의 과정을 구현..
오늘은 제어문의 나머지 파트에 대해서도 다뤄보겠습니다. 제어문의 경우 자바나 C언어나 큰 차이가 없으니 기존에 다른 언어를 익혀두신 분이라면 스무스하게 넘어갈 수 있습니다. 반복문의 경우 동일한 작업을 반복할 때 사용할 수 있습니다. Hello World라는 문장을 100번 출력해야 한다면, 단순하게 출력문을 100번 복사 붙여 넣기로 구현할 수 있습니다만.. 코드도 쓸데없이 길어지므로 비효율적입니다. 이럴 때 반복문을 알고 있다면 손쉽게 100번 출력이 가능해집니다. 반복문들을 먼저 다뤄보겠습니다. for문 for(초기화; 조건식; 증감식){ 수행될 명령들 } for문은 초기화, 조건식, 증감식, 그리고 수행되야할 명령들로 이루어져있습니다. 예를 들어서 총 10번 무엇인가를 출력해야 한다면 다음과 같이..