목록Programming Language/Spring (17)
이야기박스
문제 Kotlin SpringBoot JPA를 통하여 자동으로 테이블을 생성한 경우, 컬럼 순서가 원하는 대로 들어가지 않습니다. 상황 application.yaml에 정의되어 있는 jpa 설정은 아래와 같습니다. spring: jpa: database: mysql hibernate: ddl-auto: update generate-ddl: true show-sql: false properties: hibernate: dialect: org.hibernate.dialect.MySQL55Dialect 테이블 정의 Entity는 아래와 같습니다. 원하는 컬럼 순서는 [ id -> name -> age ] 입니다. @Entity @Table(name = "sample") data class Sample( @Id..
# Reference https://yoojh9.github.io/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-HttpMessageConverter/ 스프링부트 HttpMessageConverters 스프링 프레임워크와 HttpMessageConverters HttpMessageConverter를 커스텀하여 개발하다 이슈가 발생했다. spring framework가 default로 제공해주는 HttpMessageConverter의 instance들이 있는데, 이를 제대로 알아보지 않고 그냥 구글링하여 코드를 추가하다보니 이슈가 생겼다 yoojh9.github.io https://www.baeldung.com/spring-httpmessageconverter-rest ..
수정 중인 문서입니다. # 스프링 테스트란? 스프링은 복잡한 애플리케이션 개발을 위하여 IoC/DI를 이용하는 객체지향 프로그래밍 프레임워크입니다. IoC/DI를 이용하여 복잡한 애플리케이션을 구현했다고 가정을 해보겠습니다. 이제 서비스 검증을 위하여 테스트를 진행해야 하는데, 애플리케이션이 복잡해서 무엇부터 진행해야 하는지 막막합니다. 이때, 사용되는 것이 스프링 테스트입니다. # 테스트 ## Unit Test (단위 테스트) 단위 테스트는 개발자가 설계하고 만든 코드가 원래 의도한 대로 동작하는지를 개발자 스스로 빨리 확인하기 위하여 구성합니다. 기본적으로 확인 대상(Result)과 조건(Condition)이 간단할수록 좋지만 그렇다고 무조건 단위 테스트를 작게 구성하는 것이 좋다고 생각되지는 않습니..
# 개요 Spring Core로 동작하는 webapp 프로젝트를 최근에 진행하게 되었습니다. DB와 커넥션은 SpringJdbc + ibatis를 이용하게 되었고, 여러 TABLE에 데이터를 한 배치에 INSERT 해야 하는 기능이 필요하였습니다. 마침 이전 Spring Study에서 @Transactional을 사용했던 기억이 나, 시도를 했었는데 기대했던 대로 동작하지 않았었습니다. @Transactional(value = "myTransaction") private boolean transactionInsert(Object vo1, Object vo2) { try { mapper.insertFirst(vo1); mapper.insertSecond(vo2); } catch (Exception e) {..
# 개요 Spring으로 구성된 프로젝트에서 생긴 이슈를 처리하면서 공부한 내용을 정리하려고 합니다. HTTP Request를 받아 처리하는 작업을 하던 도중, InputStream을 못 읽는 문제가 발생하였습니다. 원인을 찾아보니 Spring Filter 때문이란 걸 알게 되었습니다. Filter의 내용을 간략히 정리하며 비슷한 기능을 가지는 Interceptor도 가볍게 집고 넘어가려 합니다. # Spring Architecture ## Filter 위 사진은 스프링에서 Request가 들어오는 경우의 아키텍처입니다. 사진과 같이 Filter는 DispatcherServlet 보다 앞단에서 Request를 받아들이는 역할을 합니다. Web Application에 등록이 이루어집니다. 때문에 예외가 발..
EntityManager entityManager = entityManagerFactory.createEntityManager(); EntityTransaction transaction = entityManager.getTransaction(); 을 통하여 transaction 생성 후, transaction.begin(); entityManager.persist(data) transaction.commit(); 이러한 구조로 했었는데 에러가 발생하였다. 에러 메세지 org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection at org.hibernate.exception.internal.SQLExceptionTyp..
이번 장은 스프링을 넘어서 어디서든 적용될 만한 철학을 담고 있음 정의란 원래 사물의 본질적인 뜻을 담고 있다. 따라서 정의를 이해하려는 노력은 중요하다.스프링의 정의"자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크"# 애플리케이션 프레임워크* 프레임워크, 라이브러리 : 한 가지 기술에 특화된 목표를 가지고 만들어짐==> '애플리케이션' 프레임워크 : 에플리케이션의 전 영역을 포괄하는 범용적인 프레임워크 핵심 기술에 담긴 프로그래밍 모델을 일관되게 적용해서 엔터프라이즈 애플리케이션 전 계층과 전 영역에 전략과 기능을 제공해줌으로서 애플리케이션 개블을 편리하게 해주는 애플리케이션 프레임워크! # 경량급실제로는 가볍지 않지만, 불필요한 기능이 없다.즉, 가성비가 좋다. # 자바..
7.4~7.6 초반https://bgc8214.github.io/%EC%8A%A4%ED%94%84%EB%A7%81/2019/03/11/%EC%8A%A4%ED%94%84%EB%A7%81-7%EC%9E%A5-%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EA%B8%B0%EC%88%A0%EC%9D%98-%EC%9D%91%EC%9A%A9.html 7.6 나머지컨텍스트 분리테스트용 @Configuration 클래스를 별도로 생성하여 컨텍스트를 분리한다. @ContextConfiguration(classess={})위와 같은 방법으로 등록 @Import(**.class)@Configuration 작업시, import한 클래스도 함께 빈으로 등록 프로파일개발/리얼 환경에서 각기..