spring
-
[Kotest, Mockk, JUnit] 테스트 중 자주하는 착각 모음웹 개발/Spring Framework 2024. 3. 12. 00:27
업무 중에 테스트 코드를 작성하다가 착각해서 잘못 사용해뒀던 것들을 정리하기. 알아두면 테스트 코드 작성하다 왜 안되지? 왜 이상하지하는 시간을 줄여줄 것이다! 별거 아닌 것처럼 보이는지만 원인을 알아채는데도 시간을 꽤 썼다. 1. Mockk 사용 시, Mocking 하지 않았는데, Mock 함수를 호출한다.실제 인스턴스를 생성하더라도 mockk 기능을 쓰면 해당 객체의 함수 리턴 결과를 조작할 수 있을거라 생각하지만 그렇지 않다. mock 처리된 객체만 mockk 기능이 동작한다. 착각하는 예시// 클래스 class Confusion { fun getHello(language: String): String { return when(language) { "kr" -> "안녕" else -> "Hello"..
-
스프링 부트 입문자 도서 ! - '처음 배우는 스프링부트2'를 읽고IT, 기술 도서 2019. 7. 21. 00:32
회사에서 스프링을 사용하고 있었기에 스프링을 더 쉽게 사용할 수 있게 해주는 '스프링 부트'가 실제로 어떻게 사용하는지 궁금하던 차에 이 책을 보았다. 간단하게 살펴보니 처음 스프링 부트를 배우려는 개발자를 겨냥한 책으로 보였다.(이미 제목이 말하는 것처럼) 스프링 부트를 처음 배우는 것이지 스프링이 처음이면 이 책을 구입하지 않는게 좋다. 스프링 부트를 이용해 간단한 게시판을 만들어 보고, 멀티 모듈 프로젝트, REST 방식으로 구현, 스프링 시큐리티와 OAuth2, 스프링 배치 등 을 짧고 간단하게 알려준다. 심화적인 부분은 개발자의 몫으로 보이고 이 책은 시작하는 사람을 위한 입문서이다. 나도 회사에서 스프링 부트를 사용하지 않기 때문에 이 책을 통해 스프링 부트가 어떤 것인지 맛만 본 수준이라 더..
-
[Spring] context:component-scan 사용법 정리웹 개발/Spring Framework 2019. 2. 15. 23:58
component-scan 사용법 정리.md context:component-scan 사용법 @Controller, @Service, @Repository, @Component 등의 애노테이션을 component-scan을 xml에 선언해서 사용하고 있다. 기존에 사용하는 component-scan 사용방식이 불필요해보여서 정리할 필요가 있다고 느껴져 선임님과 같이 찾아보고 수정을 했다. component-scan으로 애노테이션을 어떻게 스캔해서 사용하는지 정리하려고 한다. base-package는 패키지를 어디부터 스캔할지 지정해주는 부분이다. 스캔할 패키지를 여러개로 지정해줄 수도 있다. spring 공식문서를 보면 component-scan 방법에 대해 잘 나와있다. 스프링 2.5버전 이상부터 st..
-
[Eclipse] tomcat 서버 목록에 프로젝트가 안 보일 경우웹 개발/Spring Framework 2019. 1. 15. 15:19
아래 사진처럼 프로젝트는 있는데 톰캣 서버 목록에 아무것도 안 뜨는 문제가 생겼다. STS3 -> STS4로 바꾸는 과정에서 생겼는데 기존 STS3와 비교하고, 구글링을 하면서 힌트를 얻어서 해결했다.(캡처 사진은 해결하고 난 뒤라서 프로젝트 목록을 가렸다.) 글쓴이 개발도구Spring suite tool 4(이클립스 기반) 해결한 방법Eclipse JST Server Adapters, Eclipse Java EE Developer Tools가 설치되었는지 확인해본다.(이클립스 마켓에서 다운 받을 수 있다. Help > Eclipse Marketplace)
-
[Spring]필드 주입(Field Injection) 대신 생성자 주입(Constructor Injection)을 사용해야 하는 이유웹 개발/Spring Framework 2018. 12. 31. 14:28
Field Injection is not recommended.md Field Injection을 추천하지 않는 이유(+Constructor Injection을 추천하는 이유) 의존성 주입을 할 때 Field Injection은 좋지 않다는 글을 읽고 왜 그런지 찾아봤다. 스택오버플로 뿐만 아니라 스프링팀에서도 Field Injection을 추천하지 않았다. 왜 그런지 몇가지 글을 보고 종합해서 정리해본다. 일단, 의존성 주입의 종류로는 Constructor, Setter, Field 타입이 있다. Constructor(생성자) public class ExampleCase{ private final ChocolateService chocolateService; private final DrinkServi..
-
[Spring] e.printStackTrace() vs logger.error(logger.error를 사용해야하는 이유)웹 개발/Spring Framework 2018. 12. 22. 15:04
temp1 e.printStackTrace() vs logger.error e.printStackTrace()를 사용하지 말고 logger.error를 사용하라는 글을 읽었던 기억이 있다. 부가적인 설명이 있었는데, 뭔가 구체적으로 알고 싶어 스택오버플로를 뒤져봤다. 왜 써야하는지 많은 개발자분들이 댓글을 달아놨는데, 그 댓글들을 해석해 정리해두려한다.(별이 많은 댓글 중심으로 정리!) answers logback이나 log4j같은 logging framework를 사용하지 않으면 아래와 같은 코드를 작성할 것이다. e.printStackTrace(); logging framework를 사용한다면, 아래와 같이 작성할 수 있다. logger.error("Error Occurs!!", e); logging..
-
[Mybatis]mybatis에서 테이블의 언더바 컬럼을 카멜형식으로 변환해주는 설정웹 개발/Spring Framework 2018. 11. 20. 12:26
underscoreToCamel Mybatis에서 테이블의 언더바 컬럼을 카멜형식으로 변환해주는 설정 있을 것 같은데 알지는 못했던 설정이다. 보통 테이블의 컬럼은 언더바 형식(city_name)으로 되어있고, 개발을 할 때는 카멜형식(cityName)으로 만든다. 그래서 왠지 언더바를 카멜로 바꿔주는 설정이 있지 않을까 했는데, 선임님이 찾아주셨다! 물론 Mybatis 문서를 꼼꼼히 읽어봤다면 알겠지만, 보통 하나하나 다 읽어보진 않으니까 몰랐었다. 나만 그런가… Mybatis 공식 문서를 보면 이렇게 적혀있다. 설정 설명 값 디폴트 mapUnderscoreToCamelCase 전통적인 데이터베이스 칼럼명 형태인 A_COLUMN을 CamelCase형태의 자바 프로퍼티명 형태인 aColumn으로 자동으로..
-
[Spring] @PostConstruct란?(정의와 장점)웹 개발/Spring Framework 2018. 11. 12. 17:31
1. @PostConstruct란? @PostConstruct는 의존성 주입이 이루어진 후 초기화를 수행하는 메서드이다. @PostConstruct가 붙은 메서드는 클래스가 service(로직을 탈 때? 로 생각 됨)를 수행하기 전에 발생한다. 이 메서드는 다른 리소스에서 호출되지 않는다해도 수행된다. 출처: Oracle Doc 2. 왜 사용하는가(장점)? 1) 생성자(일반)가 호출 되었을 때, 빈(bean)은 아직 초기화 되지 않았다. (예를 들어, 주입된 의존성이 없음)하지만, @PostConstruct를 사용하면, 빈(bean)이 초기화 됨과 동시에 의존성을 확인할 수 있다. + 개인 의견으로 클래스 내에 @Autowired를 붙여서 객체를 사용할 때, 생성자가 필요하다면 @PostConstruct..