전체 글215 Spring 사용 시 DB를 H2에서 MySQL로 변경하기(JPA사용) In-memory DB인 h2를 사용하며 프로젝트를 구현하고 있었고 최종 배포의 시점이 다가오기 전에 미리 MySQL로 변경하게 되었습니다. 추가할 설정이나 변경사항이 많을까 싶었는데 다행히 상당히 쉬웠습니다! 사용한 Version 정보 Gradle 7.5 JDK 11 1. mysql에 접속해서 사용할 database 만들어놓기 정보를 저장할 DB를 설정해 줄 것이기 때문에 미리 사용할 database를 만들어 놓습니다. 2. build.gradle dependency 추가 원래 jpa를 사용하고 있었기 때문에 jpa dependency는 들어가 있었고, mysql dependency만 추가로 넣어주었습니다. dependencies { /* jpa */ implementation 'org.springfr.. 2022. 8. 31. LAN & WAN & TCP/IP & MAC에 대해 알아보기 왠지 모르게 네트워크 관련 부분은 들어도 헷갈리고 자꾸만 까먹게 되길래 기록해두기로 했습니다! 아무래도 눈에 확연히 보이는 것이 아니다 보니 더욱 그런 것 같습니다 😵💫 알기 쉽도록 제가 이해한 대로 풀어 설명해보도록 하겠습니다. (혹시 잘못된 내용이 있다면 알려주시면 감사하겠습니다.) 1. LAN (Local Area Network) LAN은 '지역 네트워크' 라는 의미로 작은 네트워크를 지칭합니다. 작은 네트워크라고 함은 보통 하나의 학교, 연구소나 캠퍼스 등과 같은 범위에 한정됩니다. LAN 안에서 컴퓨터 자원들(컴퓨터, 프린터, 서버, 라우터 등)이 서로 연결되어 있습니다. 케이블로 연결하는 것이 성능 상 좋지만 무선으로 연결도 가능합니다. LAN 내의 기기들은 switch에 Ethernet 케.. 2022. 8. 23. Model interface 안녕하세요 이번에는 Spring framework에서 제공하는 Model이라는 interface에 대해서 알아보려고 합니다.☺️ Model Interface의 역할 Spring MVC에서 MVC는 Model, View, Controller의 약자입니다. 이 중에 Model은 애플리케이션에서 사용되는 데이터를 담고 있는 역할을 합니다. Model interface는 그런 model의 역할과 맞게 data를 다룰 수 있는 interface입니다. 조금 더 정확히 이야기 하자면 model에 "attributes"를 추가하기 위해 고안된 interface입니다. Model에 담길 수 있는 데이터는 String, Object 등 여러 type의 데이터가 있습니다. 그리고 view와 controller 사이에서 데.. 2022. 8. 20. SessionId 사용하여 로그인한 회원이 작성한 글 DB에 저장하기 Member(회원)와 Post(게시글) entity가 1 : N 관계일 때, 로그인 한 회원이 글을 작성했을 때 DB에 회원 정보와 함께 저장되도록 하는 기능을 구현해보았습니다. 방법을 몰라서 이런 저런 시도를 두 시간 가량 해보다가 구글링과 그 간 배웠던 지식들을 토대로 결국에는 구현해낼 수 있었습니다. 필요하신 분께 도움이 되면 좋겠고, 더 좋은 방법이 있다면 알려주시면 감사하겠습니다. 여기서는 Form login을 사용했고 session id로 인증하는 방법을 사용했습니다. 1. SecurityFilterChain을 보면 "/v1/post/**" 경로에는 인증된 사용자만이 접근하여 글을 작성할 수 있도록 권한 설정을 해두었습니다. @Configuration public class AppSecurit.. 2022. 8. 15. char 배열과 String class 간 변환 String을 char로 변환하는 경우는 알고리즘 문제를 풀 때 입력으로 String이 주어지고 String의 문자열 하나하나를 연산 해야할 때 주로 사용해왔습니다. 예를 들어서, 입력으로 12345가 주어지고 각 자리수에 10을 곱하여 출력해야 하는 경우가 있습니다. 그럴 때 for loop과 charAt() method를 적절히 사용해서 연산을 하고는 합니다. 사실 알고리즘을 풀 때는 위와 같은 방법으로 주로 하긴 하지만, 이번에 String을 char[]로 변환하는 메서드가 있다는 것을 알게되었고 나중에 필요할 일이 있을 것 같아 남겨두려고 합니다. String str = "12345"; char[] charArr = str.toCharArray(); //[1, 2, 3, 4, 5] 이렇게 toCh.. 2022. 8. 13. @Controller와 @RestController의 차이점 @Controller와 @RestContoller의 차이점이 궁금함에도 유사한 기능을 하나보다 하며 넘어갔었습니다. 그런데 역시나.. 기능이 다르다는 걸 알게되었고, 이 참에 그 둘의 차이에 대해서 좀 더 알아보려고 합니다. 먼저 문제가 있던 코드는 아래 코드였습니다. 제 의도는 /login 으로 접속했을 때, template directory에 저장되어 있는 loginForm.html을 view로 보여주는 것이었습니다.그런데 의도와는 다르게 return 해주는 String 값이 화면에 나왔습니다. 보통 이런 경우는 @ResponseBody가 붙어있을 때 나타나는데, 그것도 없고 어떤게 문제일까 생각해보았습니다. 그러다가 @RestController를 @Controller로 바꾸어보았고, 원래 의도대로 .. 2022. 8. 6. JWT란? JWT 생성과 사용 방법 알아보기 이전에 알아보았던 인증과 인가에서는 Session을 사용했습니다. Session은 Http Request의 Stateless한 특성을 보완하기 위해 유저의 정보를 서버에 저장하기 위해 사용되는 수단입니다. 🏷 원래 Http Request는 State를 저장하지 않기 때문에 이미 종료된 요청에 대해서 기억하지 못합니다. 이러한 특성을 무상태성(Staelessness)라고 합니다. 유저가 로그인을 한 이후에 생긴 session 정보를 서버에 저장해두고, 인증이 필요할 때마다 session 정보를 비교하여 인증상태를 유지하게 됩니다. Session은 서버를 기반으로 수행하는 인증이기 때문에 요청 회수가 증가할 수록 서버 부담 역시 증가하게 됩니다. 이런 서버의 부담을 줄여주기 위해 고안된 방식이 Token 인.. 2022. 8. 5. Authorization(인가)-인가 내부 절차 & 권한 설정하기 지난번에는 Authentication(인증)에 대해 알아보았고, 이번에는 사용자마다 접근 권한을 다르게 설정하는 authorization(인가)에 대해서 알아보겠습니다. 블로그에 글을 쓰려면 해당 블로그에 대한 관리자 권한이 있어야 글 쓰기 및 수정이 가능합니다. 해당 블로그 수정 권한이 없는 유저는 글 수정 페이지에 접근할 수가 없습니다. 웹사이트를 이용할 때 이런식으로 권한을 차등적으로 부여하는 경우가 상당히 많이 있습니다. Spring Security에서도 이런 권한 부여와 관련된 기능을 제공하는데, 내부 절차는 어떤지와 어떻게 구현하는지 차근차근 알아보겠습니다. Authorization 내부 절차 인가 작업은 FilterSecurityInterceptor에서 이루어질 수 있습니다. console창.. 2022. 8. 1. MapStruct 사용 시 여러 Constructor가 있을 때의 문제점 객체 간 mapping을 위한 코드의 양을 많이 줄여주는 Mapstruct. 구체적인 사용법을 모르고 있다가 의도대로 MapperImpl이 생성되지 않게되며 파워 구글링 덕에 궁금증을 해결했습니다. 공식 문서가 왜인지 한번에 나오지 않아서 이 사이트 저 사이트 전전하다가 겨우 찾았습니다 ㅎㅎ 다행히도 공식 문서 안에는 궁금해 하던 내용이 잘 나와있었고, 이후에는 최소한 이 부분에 있어서는 헤매지 않을 것 같아서 안심입니다. 먼저 궁금증이 폭발했던 상황은 이렇습니다. Spring Data JPA를 사용하고 있기 때문에 Entity를 만들었고, PostDtoToEntity mapper가 필요했습니다. 처음 Entity code는 아래와 같았습니다. @Entity를 사용했기 때문에 @NoArgsConstruc.. 2022. 7. 31. 이전 1 ··· 9 10 11 12 13 14 15 ··· 24 다음 반응형