분류 전체보기
-
[Spring] MVC 기본 어노테이션과 Lombok 정리하기Server/Spring MVC 2021. 10. 7. 21:59
Spring 기본적인 어노테이션 정리하기 이번 글에서는 Spring Boot에서 MVC를 사용할 때 자주 사용하는 어노테이션과 Lombok 어노테이션에 대해서 간단하게 알아보겠습니다. 위의 사진은 먼저 Spring Boot로 프로젝트를 만들었을 때 프로젝트 구조에 대한 정리입니다. 보통 view 와 관련된 파일들을 resources 디렉토리 아래에 작업을 하는데요. 대표적으로 jsp가 존재합니다. Spring Boot에서 jsp를 사용하는 법 은 여기를 확인하시면 됩니다. 대략 프로젝트 구조에 대해서 정리가 되었다 가정하고 바로 어노테이션들의 특징에 대해서 알아보겠습니다. @RequestMapping RequestMapping은 URI를 Controller의 메소드와 맵핑을 할 때 사용하는 스프링 프레임..
-
[Spring] AOP(Aspect Oriented Programming)란 무엇일까?Server/Spring 2021. 9. 27. 00:30
AOP(Aspect Oriented Programming)란 무엇일까? 스프링의 삼각형 중에 하나가 AOP(Aspect Oriented Programming)입니다. 이번 글에서는 어렵고 중요한 AOP에 대해서 정리해보겠습니다. AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불립니다. 그리고 흩어진 Aspect를 모듈화할 수 있는 프로그래밍 기법입니다. 정의하면 이런데.. 무슨 말인지 잘 와닿지 않는 거 같습니다,, 위의 A, B, C 클래스에서 동일한 색깔의 선들의 의미는 클래스들에 나타나는 비슷한(중복되는) 메소드, 필드, 코드들이 나타난다는 것입니다. 이러한 경우 만약 클래스 A에 주황색 부분을 수정해야 한다면 B, C 클래스들에 주황색 부분에 해당하..
-
[Querydsl] Spring Boot에서 Querydsl 설정하는 법Server/Querydsl 2021. 9. 16. 13:29
Spring Gradle 에서 Querydsl 설정하는 법 Querydsl은 Spring boot starter에 없기 때문에 따로 설정을 해주어야 하는데요. 그래서 Spring Boot 프로젝트는 만들었다고 가정하고 build.gradle에 Querydsl 설정 하는 법에 대해서만 정리해보겠습니다. build.gradle에 보면 맨 위에 plugins가 존재합니다. 여기에 위처럼 querydsl을 추가하겠습니다. 그리고 Querydsl 의존성을 dependencies에 추가해주겠습니다. 그리고 마지막에 위의 코드를 추가해야 합니다. 그리고 gradle 새로고침을 누르면 아래와 같이 Querydsl 의존성들이 추가된 것을 볼 수 있습니다. build.gradle 전체 코드 plugins { id '..
-
[Kotlin In Action] 5장: 람다로 프로그래밍Book/Kotlin In Action 2021. 9. 11. 01:11
5장: 람다로 프로그래밍 람다와 컬렉션 사람들로 이뤄진 리스트가 있고 그 중에 가장 연장자를 찾고 싶은 코드를 작성해보겠습니다. data class Person(val name: String, val age: Int) fun findTheOldest(people: List) { var maxAge = 0 var theOldest: Person? = null for (person in people) { if (person.age > maxAge) { maxAge = person.age theOldest = person } } println(theOldest) } fun main() { findTheOldest(listOf(Person("Alice", 29), Person("Bob", 31))) } 위의 코..
-
[Kotlin In Action] 3장: 함수 정의와 호출Book/Kotlin In Action 2021. 8. 27. 16:42
3.1 코틀린에서 컬렉션 만들기 fun main() { val list = arrayListOf(1, 7, 54); println(list.javaClass) val set = hashSetOf(1, 7, 53) println(set.javaClass) val map = hashMapOf(1 to "one", 7 to "seven", 53 to "fifty-three") println(map.javaClass) } class java.util.ArrayList class java.util.HashSet class java.util.HashMap 위의 결과를 보면 코틀린만의 컬렉션 기능을 제공하지 않는다는 것을 알 수 있습니다. 코틀린 컬렉션은 자바 컬렉션과 똑같은 클래스입니다. 하지만 코틀린에서는 자바보..
-
[Spring] Kotlin으로 ModelMapper 사용하는 방법Server/Spring 2021. 8. 25. 23:17
들어가기 전에 이번 글에서는 Kotlin에서 ModelMapper를 사용하는 방법에 대해서 간단하게 정리 해보겠습니다. Spring으로 백엔드를 개발하다 보면 DTO로 클라이언트로 부터 받아오고 JPA를 통해서 디비에 접근할 때는 Entity로 변환해서 접근을 합니다. 그리고 JPA를 통해서 나온 결과를 그대로 반환하기 것이 아니라 DTO로 변환해서 클라이언트로 반환하게 되는데요. 그러면 매번 DTO 필드가 2개, 3개 달라질텐데 그에 해당하는 생성자를 만들어야 할 것입니다. 상당히 번거로운 작업이 될텐데요. 이럴 때 사용하면 좋은 것이 ModelMapper 입니다. ModelMapper는 서로 다른 Object 간의 필드 값을 자동으로 Mapping 해주는 라이브러리 입니다. gradle impleme..
-
[JPA] 3장: 영속성 관리란 무엇일까?카테고리 없음 2021. 8. 25. 14:47
JPA에서 가장 중요한 2가지 객체와 관계형 데이터베이스 매핑하기 영속성 컨텍스트!!(JPA를 이해하려면 영속성 컨텍스트라는 것을 이해해야함!) 엔티티 매니저 팩토리와 엔티티 매니저 일단 EntityManagerFactory를 통해서 요청이 올 때마다 EntityManager를 생성합니다. EntityManager는 내부적으로 데이터베이스 커넥션 풀을 사용합니다. 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어 엔티티를 영구 저장하는 환경 EntityManager.persist(entity); EntityManager를 통해서 영속성 컨텍스트에 접근 엔티티의 생명주기 비영속(new) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속(managed) 영속성 컨텍스트에 관리되는 상태 준영속(deta..
-
[Spring] H2 Database 연결 에러 해결하기Server/Spring 2021. 8. 24. 14:16
H2 DataBase 에러 해결하기 이번 글에서는 Spring에서 H2 Database를 사용할 때 만난 에러를 해결하는 과정에 대해서 간단하게 정리해보겠습니다. H2 DataBase는 설치가 되어 있다고 가정한 상태로 글을 시작해보겠습니다. 설치를 한 후에 h2 디렉토리를 보면 bin 디렉토리가 존재할 것입니다. bin 디렉토리 안에는 h2.sh라는 파일이 존재할 것인데요. h2.sh 파일을 sh h2.sh로 실행하면 아래와 같은 화면을 볼 수 있을 것입니다. 안뜬다면 http://localhost:8082로 접속하면 보일 것입니다. 그리고 바로 연결 버튼을 누르면 위의 보이는 빨간색 에러를 볼 수 있을 것인데요. Database "/Users/choejeong-gyun/test" not found, ..