목록스프링 (4)
밍쎄의 코딩공간
SQLite에 좌표값 (위도, 경도)이 저장되어있는 경우, 쿼리를 통해 현재 위치에서 일정 거리내의 위치값을 갖는 데이터를 가져오기 위한 방법. 이를 위한 공식은 다음과 같다. distance = 6371 * acos ( cos ( rad ( lat1 ) ) * cos ( rad ( lat2 ) ) * cos ( rad ( lng2 ) - rad ( lng1 ) ) + sin ( rad ( lat1 ) ) * sin ( rad ( lat2 ) ) ) acos 내부의 식을 x라고 한다면 distance = 6371 * acos(x) acos(x) = distance/6371 x = cos(distance/6371) 이다. 그리고 x식을 사용하기 위해서 cos(x-y) = cos x cos y + sin x..
Transaction의 사용 JDBC 라이브러리에서 트랜잭션을 시작하고, try 코드 구문에서 결제 관련 비즈니스 로직을 수행하고, 해당 변경을 커밋하거나 롤백하고, 최종적으로 DB 커넥션을 종료하는 트랜잭션 코드를 살펴보자. 아래 코드에서는 결제금액의 저장과 결제 정보의 저장을 하나의 단위로 바라보았다. 그리고, 이를 하나의 트랜잭션으로 묶어주었다. 어느 하나의 부분에라도 에러가 발생한다면, 롤백하도록 설정되었다. 구체적으로, 결제 기능 안에서 ‘결제금액 저장’과 ‘결제정보 저장’을 하나의 단위로 보고 트랜잭션으로 묶어줌으로써 어느 한 부분에서라도 에러가 발생한다면 롤백 할 수 있도록 설정했다. 하기 JDBC Connection 트랜잭션 코드의 단점은 분명하다. 트랜잭션을 발생시켜야 하는 경우, Dat..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bLkUmt/btsrxO78PIR/Pk4OzNgtljo3eOYJT3cXU1/img.png)
빈 생명 주기 콜백 데이터베이스 커넥션 풀처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요합니다. 스프링 빈은 객체 생성 후, 의존 관계를 주입하는 순서로 라이프사이클이 동작합니다. 따라서 초기화 작업은 의존 관계 주입이 완료되고 난 다음에 호출해야 합니다. 스프링 빈에게 콜백 메스드를 통해서 이 시점을 알려주는 다양한 기능이 있습니다. 또한 스프링은 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 줍니다. 스프링 빈의 이벤트 라이프사이클 스프링 컨테이너 생성 스프링 빈 생성 의존 관계 주입 초기화 콜백: 빈이 생성되고 빈의 의존 관계 주입이 완료된 후 호출 로직 소멸 전 콜백: 빈이 소멸되기 직전..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bb2i0m/btsrNx3ZERc/cETkVkx24fAef0JXy09WOK/img.png)
스프링 부트란? 스프링을 편리하게 사용할 수 있도록 지원하는 프레임워크입니다. 이 툴을 사용하면서 제가 와닿는 강점은 아래와 같습니다. 그렇다면 스프링의 핵심 개념은 무엇일까요? 본질적으로 스프링은 자바 언어 기반의 프레임워크입니다. 따라서 객체 지향이라는 강력한 특징을 살려낼 수 있는, 즉 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 역할을 해줍니다. 객체 지향의 특징 이어서 객체 지향이 어떤 특징을 갖고 있는지 알아보면서, 이를 스프링에서는 어떻게 지원하는지 확인해보겠습니다. 객체 지향 프로그래밍의 의미는 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위인 객체들의 모임으로 파악하고자 하는 것입니다. 각각의 객체는 메세지를 주고받고, 데이터를 처리할 수 있습니..