일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파이썬
- 백준 15685
- with recursive
- 백준 19238
- 백준
- spring security
- java 기술면접
- JPA
- spring oauth
- 백준 파이썬
- MSA
- JVM
- spring cloud
- 백준 17779
- sql 기술면접
- springboot
- Kotlin
- 프로그래머스
- Spring
- java
- re.split
- 백준 16236
- MySQL
- 백준 16719
- 백준 17626
- 백준 16235
- 웹어플리케이션 서버
- 프로래머스
- Spring Boot
- Coroutine
- Today
- Total
목록Spring Boot (41)
시작이 반
코드를 개발하다 보면 같은 로직이 필요한 부분이 여러군데 있을 것이고 이러한 부분을 함수로 분리해서 처리한다. 이와 비슷하게 Spirng에서 흐름상 공통으로 처리해야 하는 부분이 있을 것이고 이를 위한 것이 필터, 인터셉터, AOP이다. 필터, 인터셉터, AOP의 공통점은 공통된부분을 따로 빼내어 처리하는 것이다. 필터(Filter) 필터는 스프링 컨테이너 외부에서 실행되는 공통 로직이다. 웹 컨테이너에 의해서 관리가 된다. 요청, 응답을 정제할 수 있으며 Dispatcherservlet 이전에 실행이 된다. (Spring과 분리되어야 하는 기능, 공통된 인증/인가 기능 등) 필터 메소드 - init() : 필터 객체 초기화 - doFilter() : 필터 전/후 처리 - destory(): 필터 객체 ..
Authentication 인증 : 로그인(spring security) -> jwt생성(유저정보로) -> SecurityContextHolder 인증객체 설정 Authorization 인가 : api 접근 -> jwt filter : 토큰 유효한지 확인 수행, 정상 수행 -> SecurityContextHolder에 인증 설정 Token Provider : 토큰의 생성, 토큰의 유효성 검증 등을 담당 Jwt filter : httpRequest 헤더에서 토큰을 가져와서 securityContextHolder에 저장 JwtSecuritConfig : Custom한 필터(JwtFilter)를 Security로직에 추가 JwtAuthenticationEntryPoint : 유효한 자격증명이 아니면 401에러..
Table 정보 orders member delivery 찾을 api 정보 : orders @GetMapping("/api/v2/simple-orders") public List orderV2(){ //ORDER 2개 List orders = orderRepository.findAllByString(new OrderSearch()); List result = orders.stream() .map(o -> new SimpleOrderDto(o)) .collect(Collectors.toList()); return result; } 결과: api정보 @Data static class SimpleOrderDto{ private Long orderId; private String name; private Loc..
생각나는 것 정리... XToOne 일 경우에는 LAZY 설정을 해야 한다.!!!! 꼭 @XToOne (fetch = FetchType.LAZY) 양방향 연관 관계일 때 API로 호출이 된다면 무한루프가 일어날것이다. public class Order { @Id @GeneratedValue @Column(name = " order_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private Member member; } public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; @OneToMany(..
준영속성 상태만드는 법 em.detach(entity) 특정 엔티티만 준영속 상태로 전환 em.clear() 영속성 컨텍스트를 완전히 초기화 em.close() 영속성 컨텍스트를 종료 준영속 엔티티? 영속성 컨텍스트가 더는 관리하지 않는 엔티티 ex) 임의로 만들어낸 엔티티가 식별자를 가지고 있는경우, db에서 데이터를 찾아 해당 데이터로 new Entity()를 만든 엔티티 준영속성 엔티티를 수정하는 2가지 방법 변경 감지 기능 사용 병합 사용 변경 감지 기능 사용 @Transactional void update(Item itemParam) { //itemParam: 파리미터로 넘어온 준영속 상태의 엔티티 Item findItem = em.find(Item.class, itemParam.getId())..
@Valid : 객체의 값을 검증해준다. @PostMapping("/members/new") public String create(@Valid MemberForm form) { Address address = new Address(form.getCity(), form.getStreet(), form.getZipcode()); Member member = new Member(); member.setName(form.getName()); member.setAddress(address); memberService.join(member); return "redirect:/"; } @Getter @Setter public class MemberForm { @NotEmpty(message = "회원 이름은 필수 입..
ex) H2 test 폴더안에 resources폴더를 생성한다. 기존에 main폴더에 있던 application.yml을 그대로 복사하여 test의 resources폴더 안에 넣는다. (테스트에서 할 설정과 운영의 설정은 다르기 떄문에 분리하는게 맞음) Cheat Sheet에 가보면 in-Memory 에 jdbc:h2:mem:test 가 있다. url을 jdbc:h2:mem:test 로 바꿔주면 메모리 모드로 동작한다. 그런데 Spring Boot는 별도의 설정이 없을 경우 메모리 모드로 동작한다. 이렇게 주석처리해도 메모리 모드로 동작함
싱글톤 패턴일때 스프링 빈의 이벤트 사이클 "스프링 컨테이너 생성" -> "스프링 빈 생성" -> "의존관계 주입" -> "초기화 콜백" -> "사용" -> "소멸전 콜백" -> "스프링 종료" 프로토 타입 스프링의 3가지 생명주기 콜백 인터페이스(InitalizingBean, DisposableBean) : 옛날 방식 해당 클래스에 InitalizingBean, DisposableBean인터페이스 implements afterPropertiesSet() : 의존관계 주입이 끝나면 호출되는것 destroy() : 빈이 소멸전 호출 설정 정보에 초기화 메소드, 종료 메소드 지정 : 외부 라이브러리에 적용할때 사용 @Configuration이 붙은 설정 정보에 빈등록시 메소드 지정하여 초기화 콜백, 소멸전 ..