본문 바로가기

JAVA/Spring

(8)
게시판 프로젝트 KPT Keep 설계 시 깔끔하게 정리하여 모두가 이해한 상태로 구현을 시작 Git을 브랜치를 자세하게 나눠서 적극적으로 활용하였다. 코드리뷰를 통한 자신의 코드 설명 프로젝트를 시작하기 전 대화를 통해 서로의 생각을 이해 할 수 있도록 공유한 점 시작 단계에서 API 문서 작성을 하여 개발 단계에서 참고하면서 개발 할 수 있었던 점 적극적인 참여 태도 일정에 맞춰 계획한 기능 모두 구현한 점 Problem 추가적인 기능 구현보다는 필수 기능의 완성도를 높이는 데 많은 시간을 들였다. 맡은 기능에만 충실하여 다른 팀원들의 코드를 완벽하게 이해하지 못함 에러의 원인을 찾는 시간이 오래 걸렸다. 테스트 코드를 작성하지 않았다. Try 이번 프로젝트를 바탕으로 기능을 더 구현한다. 프로젝트 기간 내에 구현을 완성했을..
2023.01.03 @PreAuthorize @Secured 사용하기 접근 권한을 관리하는 annotation @PreAuthorize, @PostAutorize, @Secured가 있다. 권한 설정이 필요한 위치에 @PreAuthorize("hasRole('ROLE_ADMIN')")이런식으로 어노테이션을 추가해 주면 권한 별로 접근을 통제한다. @PreAuthorize("hasRole('ROLE_ADMIN')") @RequestMapping("/preRole1") public @ResponseBody String preRole1() throws Exception { return "@PreAuthorize : get role ROLE_ADMIN"; } 동작을 하지 않는다면 Configure 클래스 파일 상단에 아래 코드를 추가한다. @EnableGlobalMethodSec..
2023.01.02 Spring Security...ing 인증/인가를 위한 스프링 시큐리티에 대해.. Spring Security' 프레임워크는 스프링 서버에 필요한 인증 및 인가를 위해 많은 기능을 제공해 줌으로써 개발의 수고를 덜어 줍니다. 마치 '스프링' 프레임워크가 웹 서버 구현에 편의를 제공해 주는 것과 같습니다. 스프링 시큐리티 적용하는 방법 build.gradle // 스프링 시큐리티 implementation 'org.springframework.boot:spring-boot-starter-security' '스프링 시큐리티' 활성화 WebSecurityConfig (springboot 2.7이상) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31..
2022.12.21 Lombok 01. Intro 프로그래밍을 하면서 거의 비슷한 코드인데, 반복적으로 적게되는 코드를 마주 한 적 많이있다. 대표적으로 getter와 setter같은 것들이 있습니다. 프로그래밍에서는 이러한 것들을 “보일러 플레이트 코드”라고 합니다. 1890년대 신문사업에서, 광고나 컬럼같이 계속 사용하는 텍스트들을 강철로 인쇄판으로 찍어냈던 것에서 유례. Java에서도 반복적인 코드를 쉽게 작성해주는 Lombok과 같은 라이브러리 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57..
2022.12.08 JPA 2 JPA샘플 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 @Entity // DB 테이블 역할을 합니다. public class User { // ID가 자동으로 생성 및 증가합니다. @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; // nullable: null 허용 여부 // unique: 중복 허용 여부 (false 일때 중복 허용) @Column(nullable = false, unique = true) private String username; @Column(nullable = false) private String password; @Column(..
2022.12.07 JPA 기초 ...ing 0. 어플리케이션에서 직접 데이터베이스를 다루면 번거롭다 테이블 생성, 쿼리 작성, jdbc 실행, 객체 생성 등등 직접 해줘야할 일이 많아진다 또한 SQL 의존적이라 변경에 취약하다. 쿼리문 수정, 객체에 값 삽입 등 일일히 추가 해줘야한다. 객체지향 모델과 관계형 데이터베이스의 패러다임의 불일치가 발생한다. 출처 : https://knoc-story.tistory.com/m/90 객체 리렐이션 밀도 문제 다양한 크기의 객체를 만들 수 있음, 커스텀한 타입 만들기 쉬움 테이블, 기본 데이터 타입 서브타입 문제 상속, 다형성 구현 쉬움 상속 없음, 다형적인 관계 표현 불가 식별성 문제 레퍼런스 동일성, 인스턴스 동일성 오직 pk 관계 문제 서로간의 객체 참조를 통해 표현, 다대다 가능, 방향이 있다 다대..
2022.12.06 Database와 SQL 1. Database 데의터의 집합. DBMS(Database Management System) Database를 관리하고 운영하는 소프트웨어 RDBMS RDBMS는 ‘Relational DBMS’의 약자로 관계형 데이터베이스라고 불립니다. RDBMS는 테이블(table)이라는 최소 단위로 구성되며, 이 테이블은 열(column)과 행(row)으로 이루어져 있습니다. H2 In-memory DB의 대표 주자인 H2를, 앞으로 연습용으로 사용할 것입니다. 인메모리 DB란 서버가 작동하는 동안에만 내용을 저장하고, 서버가 작동을 멈추면 데이터가 모두 삭제되는 데이터베이스 MySQL MySQL은 우리가 서비스를 배포할 때 사용할 데이터베이스입니다. AWS RDS 라는 서비스를 사용해 붙여볼 예정입니다. 스프링..
2022.12.05 웹 동작방식의 이해 IP 주소 컴퓨터 식별을 위한 위치 주소 네트워크상의 송/수신은 IP주소를 기준으로 이루이짐 브라우저 크롬, 엣지, 사파리 등... 웹페이지, 이미지, 비디오 등 컨텐츠를 송/수신 하고 표현해주는 소프트웨어 컨텐츠 송/수신, 컨테츠 표현 DNS(Domain Name Server) "www.example.com " IP 주소대신 사용. 중간 서버에서 도메인 주소를 IP주소를 중개해줌 HTTP(HyperText Transfer Protocol) 멀리 떨어져서 서로에 대한 정보가 없는 메세지의 송/수신자가 서로 필요한 요청과 응답을 할 수 있도록 미리 규약을 정해놓은 것을 “프로토콜”이라고 하고, 웹 상에서는 HTTP 라는 프로토콜을 통해서 데이터를 송/수신 HTTP에서는 언제나 Request, Respons..