Spring
-
😆 Keep - 현재 만족하고 있는 부분프로젝트를 시작하기 전에 회의를 통해 계획을 잘 짰고 그 계획에 맞춰서 잘 진행하여 원활하게 협업이 진행되었다.Github 기능(이슈, PR, 커밋규칙 , 코드리뷰 등)을 잘 활용하여 협업시 충돌을 최소화하고 개개인의 진행 상황을 잘 파악할 수 있었다.매일 2번씩 소통 시간을 가져서 편하게 질문할 수 있는 분위기가 조성되었다.팀원분들이 다들 캠을 특별한 일이 아니고선 계속 켜 주셔서 좀 더 몰입할 수 있었던 것 같다.좋은 팀원들을 만난 것 💓🫠 Problem - 불편하게 느끼는 부분포스트맨으로 테스트 시, 발행한 토큰을 직접 하나하나 넣어준 것머지할때 리뷰 몇 명 이상이 되어야 머지를 해야할지 정하지 않은것, 머지를 승인할 사람을 따로 두지 않은 것머지하기 전..
[TIL] 230611 <Spring> 팀프로젝트 14조 - E거 I4아이가 KPT 회고😆 Keep - 현재 만족하고 있는 부분프로젝트를 시작하기 전에 회의를 통해 계획을 잘 짰고 그 계획에 맞춰서 잘 진행하여 원활하게 협업이 진행되었다.Github 기능(이슈, PR, 커밋규칙 , 코드리뷰 등)을 잘 활용하여 협업시 충돌을 최소화하고 개개인의 진행 상황을 잘 파악할 수 있었다.매일 2번씩 소통 시간을 가져서 편하게 질문할 수 있는 분위기가 조성되었다.팀원분들이 다들 캠을 특별한 일이 아니고선 계속 켜 주셔서 좀 더 몰입할 수 있었던 것 같다.좋은 팀원들을 만난 것 💓🫠 Problem - 불편하게 느끼는 부분포스트맨으로 테스트 시, 발행한 토큰을 직접 하나하나 넣어준 것머지할때 리뷰 몇 명 이상이 되어야 머지를 해야할지 정하지 않은것, 머지를 승인할 사람을 따로 두지 않은 것머지하기 전..
2024.06.11 -
1. build.gradle에 아래의 의존성을 추가 implementation 'org.springdoc:springdoc-openapi-ui:1.6.6' 2. SecurityConfig의 securityFilterChain 안에 아래의 코드를 추가하여 접근을 허용하였음.requestMatchers("/v3/api-docs/**", "/swagger-ui/**", "/swagger-resources/**").permitAll() @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { // CSRF 설정 http.csrf((csrf) -> csrf.disable()..
[TIL] 230610 <Spring> Swagger 연결 시 HTTP ERROR 403 해결1. build.gradle에 아래의 의존성을 추가 implementation 'org.springdoc:springdoc-openapi-ui:1.6.6' 2. SecurityConfig의 securityFilterChain 안에 아래의 코드를 추가하여 접근을 허용하였음.requestMatchers("/v3/api-docs/**", "/swagger-ui/**", "/swagger-resources/**").permitAll() @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { // CSRF 설정 http.csrf((csrf) -> csrf.disable()..
2024.06.10 -
WebSecurityConfig`WebSecurityConfig` 클래스는 Spring Boot 애플리케이션이 시작될 때 작동됩니다. 이 클래스는 Spring Security의 보안 설정을 정의하고, 애플리케이션 컨텍스트에 설정을 등록하는 역할을 합니다. Spring Boot는 애플리케이션 시작 시 모든 `@Configuration` 클래스와 `@Bean` 메서드를 검색하고 초기화하므로,`WebSecurityConfig`도 이 과정에서 함께 초기화됩니다. 1. 애플리케이션 시작Spring Boot 애플리케이션이 시작되면, Spring 프레임워크는 애플리케이션 컨텍스트를 초기화합니다.이 과정에서 애플리케이션의 모든 구성 요소가 스캔되고, 필요한 빈들이 생성 및 초기화됩니다.2. Configuration ..
[TIL] 230607 <Spring> WebSecurityConfig, JwtAuthorizationFilter, JwtAuthenticationFilter, JwtUtil, UserDetailsServiceImplWebSecurityConfig`WebSecurityConfig` 클래스는 Spring Boot 애플리케이션이 시작될 때 작동됩니다. 이 클래스는 Spring Security의 보안 설정을 정의하고, 애플리케이션 컨텍스트에 설정을 등록하는 역할을 합니다. Spring Boot는 애플리케이션 시작 시 모든 `@Configuration` 클래스와 `@Bean` 메서드를 검색하고 초기화하므로,`WebSecurityConfig`도 이 과정에서 함께 초기화됩니다. 1. 애플리케이션 시작Spring Boot 애플리케이션이 시작되면, Spring 프레임워크는 애플리케이션 컨텍스트를 초기화합니다.이 과정에서 애플리케이션의 모든 구성 요소가 스캔되고, 필요한 빈들이 생성 및 초기화됩니다.2. Configuration ..
2024.06.07 -
@EnableJpaAuditing 어노테이션 역할 및 사용법@EnableJpaAuditing 어노테이션은 Spring Data JPA에서 엔티티의 생성 및 수정 날짜를 자동으로 관리하는 기능을 활성화하는 데 사용됩니다. 주요 기능생성 날짜 및 수정 날짜 자동 저장: 엔티티가 생성되거나 업데이트될 때마다 자동으로 created_at 및 updated_at 필드에 현재 날짜와 시간을 저장합니다.감사 정보 추가: 엔티티 생성자 및 수정자 정보를 추가적으로 저장할 수 있도록 CreatedBy 및 LastModifiedBy 어노테이션을 제공합니다.커스터마이징 가능: AuditorAware 인터페이스를 구현하여 생성자 및 수정자 정보 추출 방식을 자유롭게 정의할 수 있습니다. 사용 방법1. Spring Data J..
[TIL] 230605 <Spring> @EnableJpaAuditing, @EnableScheduling, @Scheduled, Refresh Token 자동 관리 및 Spring Security@EnableJpaAuditing 어노테이션 역할 및 사용법@EnableJpaAuditing 어노테이션은 Spring Data JPA에서 엔티티의 생성 및 수정 날짜를 자동으로 관리하는 기능을 활성화하는 데 사용됩니다. 주요 기능생성 날짜 및 수정 날짜 자동 저장: 엔티티가 생성되거나 업데이트될 때마다 자동으로 created_at 및 updated_at 필드에 현재 날짜와 시간을 저장합니다.감사 정보 추가: 엔티티 생성자 및 수정자 정보를 추가적으로 저장할 수 있도록 CreatedBy 및 LastModifiedBy 어노테이션을 제공합니다.커스터마이징 가능: AuditorAware 인터페이스를 구현하여 생성자 및 수정자 정보 추출 방식을 자유롭게 정의할 수 있습니다. 사용 방법1. Spring Data J..
2024.06.05 -
[Spring Security]인증과 접근 제어를 위해 세부적인 맞춤 구성이 가능한 강력한 프레임워크 → 스프링 애플리케이션에 보안을 적용하는 과정을 크게 간소화하는 프레임워크 Spring Security의 인증 프로세스각 구성 요소는 인터페이스로 이루어져있음→ 시큐리티의 기본 기능은 내부적으로 인터페이스를 구현한 각 구현체 클래스에 이미 구현되어 있다!따라서 우리는 모든 것을 구현하지 않아도 되며, 필요한 구성 요소만 재정의하고 구현(맞춤 구성)하면 됨! UserDetailsService (사용자 관리)AuthenticationProvider가 UserDetailsService에 사용자 관리에 대한 책임을 위임> 관련 인터페이스UserDetailsService: 인증을 위해 사용자를 찾음UserDe..
[TIL] 230604 <Spring> Spring Security 동작원리[Spring Security]인증과 접근 제어를 위해 세부적인 맞춤 구성이 가능한 강력한 프레임워크 → 스프링 애플리케이션에 보안을 적용하는 과정을 크게 간소화하는 프레임워크 Spring Security의 인증 프로세스각 구성 요소는 인터페이스로 이루어져있음→ 시큐리티의 기본 기능은 내부적으로 인터페이스를 구현한 각 구현체 클래스에 이미 구현되어 있다!따라서 우리는 모든 것을 구현하지 않아도 되며, 필요한 구성 요소만 재정의하고 구현(맞춤 구성)하면 됨! UserDetailsService (사용자 관리)AuthenticationProvider가 UserDetailsService에 사용자 관리에 대한 책임을 위임> 관련 인터페이스UserDetailsService: 인증을 위해 사용자를 찾음UserDe..
2024.06.04 -
[기존보다 Restful한 url로 수정] controller>CommentController@RestController@RequiredArgsConstructor@RequestMapping("/api")public class CommentController { private final CommentService commentService; private final JwtUtil jwtUtil; // 댓글 작성 @PostMapping("/schedule/{scheduleId}/comment") public ResponseEntity createComment(@PathVariable Long scheduleId, @Valid @RequestBody CommentRequestDto requestDto, Ht..
[TIL] 230603 <Spring> 회원가입, 로그인 기능이 있는 투두앱 백엔드 서버 만들기 (3)[기존보다 Restful한 url로 수정] controller>CommentController@RestController@RequiredArgsConstructor@RequestMapping("/api")public class CommentController { private final CommentService commentService; private final JwtUtil jwtUtil; // 댓글 작성 @PostMapping("/schedule/{scheduleId}/comment") public ResponseEntity createComment(@PathVariable Long scheduleId, @Valid @RequestBody CommentRequestDto requestDto, Ht..
2024.06.03 -
[일반적인 인증 과정] [Filter]일반적인 자바 웹 애플리케이션에서 클라이언트(사용자의 요청)는 HTTP나 HTTPS 프로토콜을 사용해서 서버의 자원에 접근하고 클라이언트(사용자) 요청은 서버의 서블릿에서 처리함서블릿은 HTTP 요청을 받아 처리한 후 HTTP 응답을 클라이언트에게 반환함일정을 등록하고 id를 반환일정을 조회해서 반환스프링은 DispatcherServlet이 서블릿 역할을 담당하고 모든 요청을 처리함요청-응답 처리과정 중, 중요한 역할을 하는 주요 컴포넌트가 "필터"임아래의 그림과 같이 서블릿 앞에 위치해 요청과 응답을 가로채서 변경가능한 개 이상의 필터는 필터 체인으로 구성 되어 있으며, 필터 체인에 속한 모든 필터는 요청/응답을 가로채서 변경가능 특징Spring에서 모든 ..
[TIL] 230531 <Spring> Filter[일반적인 인증 과정] [Filter]일반적인 자바 웹 애플리케이션에서 클라이언트(사용자의 요청)는 HTTP나 HTTPS 프로토콜을 사용해서 서버의 자원에 접근하고 클라이언트(사용자) 요청은 서버의 서블릿에서 처리함서블릿은 HTTP 요청을 받아 처리한 후 HTTP 응답을 클라이언트에게 반환함일정을 등록하고 id를 반환일정을 조회해서 반환스프링은 DispatcherServlet이 서블릿 역할을 담당하고 모든 요청을 처리함요청-응답 처리과정 중, 중요한 역할을 하는 주요 컴포넌트가 "필터"임아래의 그림과 같이 서블릿 앞에 위치해 요청과 응답을 가로채서 변경가능한 개 이상의 필터는 필터 체인으로 구성 되어 있으며, 필터 체인에 속한 모든 필터는 요청/응답을 가로채서 변경가능 특징Spring에서 모든 ..
2024.05.31 -
[Validation 어노테이션 활용하여 예외처리] build.gradle>dependencies에 아래 추가 implementation 'org.springframework.boot:spring-boot-starter-validation'dto>CommentRequestDto@Getter@NoArgsConstructor@AllArgsConstructorpublic class CommentRequestDto { @NotNull(message = "일정의 ID가 입력되지 않았습니다.") private Long scheduleId; @NotBlank(message = "댓글의 내용이 비어있습니다.") private String content; @NotBlank(message = "작성자 ID가 입력..
[TIL] 230530 <Spring> 회원가입, 로그인 기능이 있는 투두앱 백엔드 서버 만들기 (2)[Validation 어노테이션 활용하여 예외처리] build.gradle>dependencies에 아래 추가 implementation 'org.springframework.boot:spring-boot-starter-validation'dto>CommentRequestDto@Getter@NoArgsConstructor@AllArgsConstructorpublic class CommentRequestDto { @NotNull(message = "일정의 ID가 입력되지 않았습니다.") private Long scheduleId; @NotBlank(message = "댓글의 내용이 비어있습니다.") private String content; @NotBlank(message = "작성자 ID가 입력..
2024.05.30