일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링 공부
- JPA 공부
- K8S
- 자료구조공부
- 기술공부
- nestjs스터디
- 스프링부트
- nestjs
- Kafka
- JPA스터디
- 프로그래머스
- 알고리즘공부
- 플러터 개발
- 카프카
- 스프링부트공부
- 자바공부
- 스프링
- Axon framework
- Flutter
- 스프링공부
- nestjs공부
- DDD
- 플러터 공부
- JPA예제
- JPA
- querydsl
- 기술면접공부
- JPA공부
- 코테준비
- 코테공부
- Today
- Total
목록스프링공부 (13)
DevBoi
스프링 부트와 스프링의 차이 간단하게 추후 공부용으로 정리를 해보자 1. 불필요한 설정? 개발자가 설정할 부분이 줄어든다 Spring 은 xml 지옥과도 같은, web.xml 부터 servlet.xml applicationContext.xml 등과같은 필터, 리스터, 디펜던시 설정 팩토리설정 뷰 리졸버 설정 버전 설정을 다 일일히 해줘야한다. 하지만 spring boot는 버전관리도 스프링부트가 해주기 때문에 호환되는 라이브러리에 대한 종속성 버전 같은걸 개발자가 신경쓸 필요가 없다. starter 의존성 한줄로 많은걸 자동 설정해준다. 2. 내장형 톰캣을 사용한다. 스프링부트는 내장형 톰캣을 사용하고있어서 별도 톰캣설정을 하지않아도 바로 서버를 실행해서 코드를 짤수있다. 또한 환경설정 및 인프라적인 요..
RDB에서는 테이블 별로, 외래키를 매핑하며, 일대 다 혹은 다대다 의 형태를 가진다. 객체의 참조와, 외래키 매핑 관련되서 공부를 해보자 우선 간단한 예로, 팀과, 멤버에 대한 예제를 공부해보자 여러 사람이 한팀에 소속될 수 있다는 1:n관계라고 생각을 해보자 Member 에서는 Team에대한 관계와 조인 컬럼을 설정해준다. Team은 사실 별건없다. Lombok 을 사용해서 Getter,Setter도 직접 달아주었는데, 이건, 너무 불편해서 그냥 쓰기로했다 ㅋㅋ (매번 메소드 귀찮다) 이렇게 만 하면, 자동으로 PK,FK를 매핑해주는 테이블을 생성해준다. 예제 코드를 이렇게 작성해서 한번 테스트 해보자 뭐 잘들어간다. 추가로 위의소스에서 약간 수정한 내용은 PK가 id 자동생성 값일때는 String ..
JPA를 개발하면서, N+1문제에 대한 얘기가 많이나온다. N+1이란 어떤걸까? 어떻게 해결해야할까? 우선 N+1 이란, 어떤 게시물의 테이블을 POST라고 두고, Post에 달린 댓글을 Comment라고 두자 한게시물에는 여러개의 댓글이 달릴것이고, 우리는 이것을 @OnetoMany로 둔다. 자 그러면, 페이징을 뿌릴때나, 특정조건에 Post테이블을 findAll해본다고하자 우선, 그전에 JPA에서는 각각의 fetch방법이 존재한다. fetch란 뭘까? fetch란 특정 한개의 Entity 즉 테이블을 조회할때, 연관관계에 있는 객체들을 어떻게 가져올까? 라는 전략이다. 해당 전략은 크게 Eager, Lazy가 있다. Eager은 연관관계에 있는 Entity를 모두 가져오고 Lazy는 getter로 접..
노트북이 느려터져서, 화병으로 죽기전에, 한번 드라이브를 밀고 다시 세팅했다. 세팅은 언제나 할때마다 버벅인다 ㅋ; 담엔 좋은 노트북해서, 한 3년 주기로해야겠다... 무튼, 연동의 첫 부분을 위해, 프로젝트 새로띄움 우선은 Restcontroller랑 controller 랑 생성해서, view매핑까지 해놓고, mysql을 또 깔까.... 했지만, 그냥 aws 에서 설치하고 띄우려고한다. (로컬 설치 그만 ~ ^^) 그래서, aws에서 데이터베이스를 생성한다. 이건 참고자료도 많지만, 그냥 aws 가입하고 rds 생성할때, 퍼블릭 엑세스가능 (가능으로 바꿔야 boot에서 접근이 가능하다.)
스프링에서 Log로 보면 제일 많이 보이는 DispatcherServlet 이 존재한다. 해당 서블릿은 뭐하는 녀석일까???? 1. FrontController 해당 스프링에서 제일 앞단에서 받는 컨트롤러이다. 사용자가 지정해놓은 컨트롤러 보다 먼저받아서, Controller로 뿌려준다. 이 계층으로 응답을 받고 처리를 진행하는데, 쉽게 말해서 dispatcher servlet 이 받고, filter intercepter controller라고 생각하면 된다. 필터는 보안이나, 인코딩에 대한 것이라서, 내부 Servlet 전에 막아준다. 그다음에는 intercepter 인데, Controller 수행전, 수행후 특정 패턴 등에 적용이 가능하다. DispatcherServlet 은 Controller 의 ..
저번에 pom.xml에 Maven 형식으로 starter-security 만 추가하니까 모든 페이지에서 admin lock이 걸리고, 인증 페이지로 redirect 되는걸 알수있었다. 하여, 패턴적용하여, 어떤 페이지에서는 인증을 푸는 방법을 구현하였다. 우선 permitAll()을 하고, 특정 페이지에서 하나씩 어떻게 풀어나가는지 포스팅 및 정리 공부를 할 예정이다. 우선 com.date.blog 하위 패키지에 security 패키지를 추가, SecurityConfig 라는 class파일을 생성하였다. 하여 해당 소스 처럼, 해당 Config 파일은 WebsecurityConfigurerAdapter를 상속받아서, configure을 적용한다. web을 파라미터로 받는 경우에는 내부 프로젝트이 소스 접..
1. 우선 Maven 인경우, pom.xml 의 파일에 해당 디펜던시를 추가해준다. org.springframework.boot spring-boot-starter-security (주의 : 이걸 pom.xml 에 추가하고 프로젝트를 띄우면, 전체 경로가 다 막혀버린다.) 그래서, 우선 pom.xml 주석 처리하고, Login controller 생성 및 간단하게 view 연결 진짜 간단하게 id,pw만 받아서 submit 하는 버튼만 만들었다. 이제 다시 pom.xml 에 스프링 시큐리티 추가해서, 프로젝트를 띄운다. 이런 인증창이 나오면 성공, 우선 다음에는 스프링 시큐리티 해제 방법 과 사용 및 구현 방법을 알아보자
스프링 이나 다른 프로그래밍을 보게 되면, Interface를 만들고, 이를 구현하는 Impl 파일을 볼수있다. 이걸 왜 만들까? 사실 Interface의 사용용도를 모르는 사람 입장에서는 이해가 안될 것이다. 왜 Service도만들고 ServiceImpl을 만들어서...두번쓰는거지...? 답은 간단하다. 트랜잭션 처리 및 JDBC 종속성 해제 때문이다. 스프링 뿐 아니라 모든 프로그래밍 방법론에서 다루고있는 말이다. 각 프레임 워크에서 기본으로 제공하는 Interface에서는 제일 상위에 트랜잭션 처리관련 interface가 있고 이를 상속 받아서, interface를 구현, 및 하위 몸체 코드에서 이를 동작시킨다. 즉 접근 방식은 하나의 방식으로 통일하고, 접근에 쓰이는 로직 코드만 분리를 하기 위함..
이전에, git 에 대한 bash를 통해, 해당 레파지토리를 push 했다. 해당 cmd 를 이용해서, 하는 방법 도 있지만, Gui 를 사용해서, 하는것이 좀 더 보기도 좋고, 많이 사용한다. 그래서 소스트리 사용방법 정리 및 기본적인 pull,push 방법을 포스팅 하고자 한다. 1. 설치 https://www.sourcetreeapp.com/ Sourcetree | Free Git GUI for Mac and Windows A Git GUI that offers a visual representation of your repositories. Sourcetree is a free Git client for Windows and Mac. www.sourcetreeapp.com 여기서 개인 사용자 컴퓨..
흔히 Controller 에서 볼수있는... 가장 흔한 메소드와 , url 연결 매핑 메소드! @RequestMapping, @GetMapping , @PostMapping 차이가 뭐지....? 사실 차이는 없다. /test 나 /test2 나, 방식은 같다. 결국 @GetMapping 은 RequestMapping에 대해서 길게 쓰기 귀찮을때 바로가기 처럼 연결해주는 방법이다. @RequestMapping 에 대해서 조금 더 공부해보자!! 우선 기본 구조 이렇게 value 와 method를 통해 방식을 결정 받는 방법이다. 단, value 에서는 단순 url에 대한 고정도 가능하지만, URL 패턴에 대한 정의도 가능하다 예를 들면 이런식으로 value 를 두게 되면, test2하위에 아무거나 해도 다 ..