[회고록] 구름톤 유니브 8월 회고록
·
이것저것/구름톤유니브
구름톤 유니브에 합격하고 한 달이라는 시간이 지났다. OT동양미래대학교 강의실에서 OT를 진행했다. 운영진들의 준비로 전체 OT때 잘 듣지 못했던 내용들을 좀 더 자세히 들을 수 있는 시간이었고 여러 재미있는 게임과 상품도 준비해주셨고 재미있게 잘 즐겼던거같다.스터디 팀 결성나는 구름톤 유니브에 백엔드 파트로 지원하였다. 스터디 팀 결성은 파트별로 나뉘었고 다른 백엔드 파트분들과 한 팀이 되어 스터디를 진행하게 되었다. 우리 백엔드팀은 모두 스프링을 사용하기에 Spring -> 봄 -> BOM이라는 팀명을 정하게 되었고 1주에 한 번씩 깃허브에 스터디 내용을 PR하고 2주에 한번씩 대면으로 스터디 내용을 이야기하는 시간을 갖기로 했다.스터디먼저 스터디 강의를 정해야 했는데 우리 팀은 인프런의 "Sprin..
[Spring Boot] OAuth2와 Spring Security 로그인 같이 사용할때의 문제점
·
Web/Spring Boot
문제점 발견프로젝트를 개발하면서 OAuth2와 일반 Security 로그인을 같이 사용하면서 문제가 생겼다. @AuthenticationPrincipal 어노테이션을 이용해 현재 로그인된 사용자 정보가 필요한때 소셜로그인과 Security 로그인 사용자의 반환되는 객체가 달라서였다. OAuth2를 사용하는 사용자는 OAuth2User 객체, Security 로그인을 사용하는 사용자는 UserDetails 객체를 반환하여 생기는 문제였다. 그렇다면 어떻게 해결할수있나해결방법현재 개발하는 프로젝트에서는 OAuth2User와 UserDetails를 상속하는 PrincipalDetails 클래스를 만들어서 해결하였다.@Datapublic class PrincipalDetail implements UserDeta..
[Spring Boot] Abstract Class로 Entity, Service 구현, (슈퍼-서브 타입)
·
Web/Spring Boot
개인 프로젝트 진행 중에 여러 종류의 게시판을 사용하게 되었다.초기에 각각 게시판마다 엔티티와 서비스를 구현함에 있어 문제점들이 보이기 시작하였다.문제점각각 게시판마다 댓글 엔티티 따로 구현해줘야 함반복(공통)되는 항목들이 많음 Entity따라서 공통되는 부분들을 하나로 통합하고자 추상 클래스로 변경하기로 하였다.JPA에서 슈퍼-서브 타입 모델을 구현하기 위해선 @Inheritance(strategy = InheritanceType.JOINED)어노테이션으로 전략을 정해주어야 한다.  JOINED : 조인 전략 (권장) SINGLE_TABLE : 단일 테이블 전략 (기본)TABLE_PER_CLASS : 구현 클래스마다 테이블 생성 전략 (추천X)JOINED각각 테이블을 생성하고 조인하는 전략JPA가 자동..
[게시판] 2 - Security 기본 설정 (CSRF와 CORS)
·
Web/Spring Boot
SecurityConfig @EnableWebSecurity @Configuration public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{ http .csrf(csrf -> csrf.disable()) .cors(cors -> cors.disable()) .authorizeHttpRequests((auth) -> auth .requestMatchers(new AntPathRequestMatcher("/**")).permitAll() ); return http.build(); } } 나중에 필요할시 설정하기위해 임시로 csrf와 cors를 비활성화 해주고 모든..
[게시판] 기본설정
·
Web/Spring Boot
버전정보 자바 - 17 스프링부트 - 3.2.1 mysql - 8.0 Dependency implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity..
[Project] 쇼핑몰 프로젝트 - 11 로그인 실패 핸들링
·
Web/Spring Boot
로그인 실패시에 /로그인경로?error로 이동하고 아무런 에러표시가 발생하지않는다. 여러 로그인관련 오류를 표시해주겠다. SecurityConfig 수정 @Configuration @EnableWebSecurity @RequiredArgsConstructor @EnableGlobalMethodSecurity(prePostEnabled = true) public class SecurityConfig{ private final AuthenticationFailureHandler CustomAuthFailureHandler; @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{ http .csrf().disable()..
[프로그래머스] 추억점수
·
Coding/자료구조&알고리즘
https://school.programmers.co.kr/learn/courses/30/lessons/176963 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 사진들을 보며 추억에 젖어 있던 루는 사진별로 추억 점수를 매길려고 합니다. 사진 속에 나오는 인물의 그리움 점수를 모두 합산한 값이 해당 사진의 추억 점수가 됩니다. 예를 들어 사진 속 인물의 이름이 ["may", "kein", "kain"]이고 각 인물의 그리움 점수가 [5점, 10점, 1점]일 때 해당 사진의 추억 점수는 16(5 + 10 + 1)점이 됩니다. 다른 사진 속 인물..
DTO와 Entity
·
Web/Spring Boot
Entity란 Entity는 DB 테이블에 존재하는 Column을 필드로 가지는 객체를 뜻함. Entity는 DB 테이블과 1대1 대응관계이고, 테이블에 가지지 않는 Column을 필드로 가져서는 안 된다. 또한 다른 클래스를 상속받거나 인터페이스의 구현체여서는 안 된다. Member 테이블에 id, name, age Column이 있으면 Spring Jpa를 사용할 때 아래와 같이 Entity 클래스를 작성할 수 있다. @Entity public class Member{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private int age; } @Entity어노테이션은 해당 클..
Junyoung.dev