Spring 57

[괴발개발] TODO 웹 개발 노트 - 예외처리 및 완료

0. 권한 없이 admin.html 접속 ✅ (로그인 폼으로 이동) 1. 회원가입 값 하나도 안 넣고 해보기 ✅ (빈칸임을 알려줌) 2. 회원가입 값 이메일만 넣고 해보기 ✅ (빈칸임을 알려줌) 3. 회원가입 값 비밀번호만 넣고 해보기 ✅ (빈칸임을 알려줌) 4. 로그인 그냥 해보기 (아무거나) 🚫 (error 라고만 알려줌) -> ✅(html 예외처리) 5. 회원가입 제대로 해보기 ✅ (로그인 폼으로 정상 이동) 6. 로그인 제대로 하기 ✅ 7. 일반 계정으로 admin.html으로 접속하기 ✅ (접근 불가 페이지임을 알려줌) 8. 글 작성 값 하나도 안 넣고 해보기 ✅ (빈칸임을 알려줌) 9. 글 작성 값 제목만 넣고 해보기 ✅ (빈칸임을 알려줌) 10. 글 작성 값 내용만 넣고 해보기 ✅ (빈칸임을..

Spring/괴발개발 2022.02.20

[괴발개발] TODO 웹 개발 노트 - 권한 부여

기존에 존재했던 코드를 거의 다 갈아엎었습니다. 아무래도 RESTful API를 본인 어플리케이션에서 사용하면서 권한을 부여하기에는 조금 무리가 있는 것 같았기에 갈아엎었습니다. (JWT가 문제였는 데, JWT를 사용하여서 해더를 통해 권한을 부여하여야하는 데, 이를 관리하기 위해서는 쿠키에 값을 저장을 해야합니다. 그럼 결국에는 코드 갈아엎는 것은 동일하였기에 코드를 그냥 갈아엎고, RESTful를 포기하였습니다.) @EnableWebSecurity @AllArgsConstructor @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { private MemberService memberService; @Bea..

Spring/괴발개발 2022.02.19

[Spring] Spring AOP/PSA 설명

이전 포스트에서 POJO를 간단하게나마 설명하였습니다. 그중에서 IOC와 DI는 짧게라도 설명한 적이 있으나, AOP와 PSA는 없었기에 이번 기회에 포스트하고자 합니다. AOP란? Aspect Oriented Programming의 약자로 관점 지향 프로그래밍을 뜻합니다. 관점지향은 쉽게 설명하자면, 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다... 정도로 설명이 가능합니다. 한 마디로 표현하자면, 어떤 로직을 어떤 관점으로 각각 공통화된 로직이나 기능을 하나의 단위로 묶는 것 이라고 표현할 수 있습니다. 핵심관점은 보통 우리가 적용하고자하는 핵심 비즈니스 로직 등이고, 부가적인 관점으로는 핵심로직을 실행하기위해 행해지는 DB연결, 로깅, ..

Spring 2022.02.19

[Spring] Spring POJO 설명

Spring 본질이자, Spring 관련 글들을 읽으면 왠만해선 항상 나오는 POJO...이를 설명하고자 포스팅했습니다. POJO란? Plain Old Java Object의 약자로 단순한 자바 오브젝트라는 뜻입니다. 객체 지향적인 원리에 충실하면서 환경과 기술에 종속되지않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 뜻합니다. 그러한 POJO에 어플리케이션의 핵심로직과 기능을 담아 설계하고 개발하는 방법을 POJO 프로그래밍이라고 합니다. 무엇을 POJO라고 부를 수 있나요? 1. 특정 규약에 종속되지 않는다. Java와 꼭 필요한 API외에는 종속되지 말아야합니다. EJB2와 같이 특정 규약을 따라 만들게 하는 경우는 대부분 규약에서 제시하는 특정 클래스를 상속하도록 유도하고 있습니다...

Spring 2022.02.18

[괴발개발] TODO 웹 개발 노트 - 회원가입과 비밀번호 암호화

원래는 그냥 평문으로 저장을 하고자하였지만, 최소한의 암호화는 해야한다고 생각이 들어 암호화를 하도록 하였습니다. 일단, 먼저 기존 엔티티 중 회원(Member) 엔티티 코드를 조금 수정하였습니다. UserDetails 이라는 인터페이스를 구현을 합니다. 일종의 권한 및 핵심 사용자 정보를 편하게 저장시켜주는 인터페이스이기에 사용합니다. 자세한 내용은 이 글을 참조해주세요. (잘 정리되어 있어 도움이 많이된 글입니다.) @ElementCollection(fetch = FetchType.EAGER) @Builder.Default private List roles = new ArrayList(); @Override public Collection

Spring/괴발개발 2022.02.18

[Spring] Spring Entity, Repository 설명

Spring Entity, Repository는 DB와 관련된 항목들 중 몇 가지입니다. 그 외에는 DAO, DTO, VO, Transaction 등이 있습니다. 이 글이 유용할 수도 있습니다. Repository에 대해서 참고하고 싶으시다면 참고해주세요. Entity란? Entity(엔티티)는 데이터베이스에 쓰일 필드와 여러 엔티티간 연관관계를 정의하는 역할을 합니다. 테이블에 대응하는 하나의 클래스라고 생각하시면 됩니다. Entity 어노테이션과 함께 여러 관련 어노테이션을 사용하여 설계할 수 있습니다. 모든 어노테이션들을 포스팅할 수 없으니, 링크를 걸어두겠습니다. Repository란? Repository는 기존 JPA를 한 단계 더 추상화시킨 인터페이스로서 간단하게 설명하자면, Entity에 의..

Spring 2022.02.17

[괴발개발] TODO 웹 개발 노트 - 엔티티 설계

TODO 웹 개발에는 기본적으로 갖추어야하는 조건에는 회원가입과 글 작성이 있습니다. 회원가입은 기본적으로 회원 엔티티가 필요할 것이고, TODO 게시글도 따로 저장을 해야하기에 엔티티가 필요합니다. 그리고 TODO 게시글의 수정 및 삭제는 작성자만이 할 수 있어야고, 동시에 회원이 총 몇개의 글을 작성했는 지 역시 알게 하고 싶었기에 양방향 연관관계로 매핑하였습니다. 회원과 TODO 게시글의 관계는 일대다이고, TODO 게시글과 회원의 관계는 다대일입니다. Member.java @Getter @Setter @NoArgsConstructor @AllArgsConstructor @Builder @Entity public class Member { @Id @GeneratedValue(strategy = Ge..

Spring/괴발개발 2022.02.17

[Spring] Spring DAO, DTO 설명

Spring DTO, DAO... DB와 밀접한 관계가 있는 만큼 중요한 내용이 담겨있기에 포스팅합니다. 짧고 간결하게 포스팅하겠습니다. DAO란? Data Access Object의 약자로, 데이터베이스의 데이터에 접근하기 위해 생성하는 객체입니다. 데이터베이스에 접근하기 위한 로직과 비즈니스 로직을 분리하기 위해 사용합니다. 간단하게 데이터베이스에 접속하여 데이터의 CRUD 작업을 시행하는 클래스입니다. JSP 및 Servlet페이지 내에 로직을 기술하여 사용할 수 있지만, 코드의 간결화 및 모듈화, 유지보수 등의 목적을 위해 보통 별도의 DAO 클래스를 생성하여 사용합니다. DTO란? Data Transfer Object의 약자로 계층간 데이터 교환을 위한 Java Beans를 뜻합니다. 또한 DT..

Spring 2022.02.16

[괴발개발] TODO 웹 개발 노트 - 준비과정

괴발개발 첫 번째 토이 프로젝트는 TODO 리스트 기능이 있는 간단한 웹 개발입니다. 기본적으로 갖추어야하는 기능들은 다음의 7가지가 있습니다. 회원가입과 로그인 기능 글 작성 기능 글 수정 및 삭제 기능 로그아웃 기능 글 체크 기능 회원 삭제 기능 글 조회 기능 그리고 시간이 여유롭다면 개발할 기능들은 다음의 3가지가 있습니다. 글 하트 기능 OAUTH2를 사용한 로그인 프로필 사진 기능 기본 기능 7가지, 추후 개발 기능 3가지 합하여 총 10가지의 기능을 20일안에 모두 끝맞치고 Docker에 무사히 배포하는 것까지가 목표입니다. 프론트는 SpringBoot에서 지원해주는 템플릿엔진 사용할 것입니다. (React 사용을 할 까도 생각을 하였으나, React까지 적용한다면 시간이 오래걸릴 것 같기 때..

Spring/괴발개발 2022.02.16