느린 것을 걱정하지 말고, 멈춰서는 것을 걱정하라
article thumbnail
Spring MVC 프레임워크
IT/SpringFramework 2019. 11. 25. 08:51

어제 토비의스프링 vol2 3장 스프링 MVC에 대하여 공부를 하였다. 공부를 수행한 시각은 약 2뽀모도리(1시간 가량)이다. 50분가량 공부하면서 느낀점은 내가 스프링에 대해 빙산의 일각정도의 지식만 갖고 프로젝트를 임해왔었다는 것이다. 토비의 스프링을 보기전에 본 책은 토비의 스프링 1/6분량의 얇은 책이었는데 지금와서 생각해보면 필요한 내용은 모두 담겨있었으나 토비의 스프링처럼 통찰을 갖다주는 책이 아닌 레퍼런스의 번역서 정도로 생각할 수 있을것 같다. 오늘 2뽀모도리동안 공부한 양에 내가 기본적으로 알고있던 내용보다 더 많은 통찰을 얻게되었고 아직 공부할 것이 많이 남아 있다는 점에서 얼마나 모르고 있었는지 반성하게 된다. 스프링의 MVC 패턴은 아래의 그림과 같이 동작한다. 스프링 웹 MVC가 ..

스프링 DataAccess 공부 후 고찰(선언적 트랜잭션)
IT/SpringFramework 2019. 11. 24. 09:44

토비의 스프링 vol2 Chapter2 DataAccess에서는 DAO클래스를 어떠한 식으로 작성하며, 추상화 기법을 이용하여 어떻게 DataAccess 기술을 사용하는지에 대해 나와있었다. 특히, 생각을 많이한 부분은 트랜잭션에 대한 설명이었는데, 개발자들이 '선언적 트랜잭션을 사용하기 위해 스프링을 사용하는 개발자가 많다.'라는 글귀에서 많은 생각을 하게 되었다. '선언적 트랜잭션'. vol1 AOP를 공부할 때도 많이 나오는 단어인데, 과연 여기서 말하는 선억적이란 무슨 의미일까 하는 궁금증이 생겨서 네이버 국어사전을 살펴보았다. 선언적의 의미로는 두가지의 동음 이의어를 발견할 수 있었다. 1. 선언적(選: 가릴선, 言: 말씀 언, 的, 과녁적) 몇 개의 배타적 개념이나 빈사(賓辭) 가운데에서 선택..

article thumbnail
Spring MVC- MyBatis 연동하기
IT/SpringFramework 2019. 11. 23. 17:30

이제 토비의 스프링에 대한 개념을 어느정도 익혀가고 있으니 Database와 연동하기 위한 빈을 연동하는 작업을 금일 수행할 것이다. Database와 연동하기위해 사용할 기술은 MyBatis인데 SQL코드와 소스코드를 나눠주고 객체와 SQL 간의 매핑을 하는데 쓰이는 퍼시스턴스 프레임워크(데이터의 저장, 조회, 변경, 삭제를 다루는 클래스 및 설정 파일들의 집합)으로 현재 우리나라의 많은 Spring 프로젝트에서 사용되고 있는 기술이다. 마이바티스의 홈페이지는 다음과 같다. https://mybatis.org/ mybatis mybatis.org 마이바티스의 정의 마이바티스(MyBatis)는 자바 퍼시스턴스 프레임워크의 하나로 XML 서술자나 애너테이션(annotation)을 사용하여 저장 프로시저나 ..

article thumbnail
Windows10 .Net Framework가 설치가 안 될 경우
IT/Windows 2019. 11. 22. 23:40

이번에 프로그램을 설치해야 하는데 포멧안 Window에 .NetFramework가 설치가 안되어 있다고 하는 메시지가 떠서 .NetFramework를 설치하기 위해 .NetFramework를 다운받아서 설치하는 작업을 진행하였다. 프로그램 설치를 진행하는데 다음과 같이 .NetFramework가 없다고 하여 .Net Framework 4.5 설치 링크를 타고 들어가서 .NetFramework를 다운받으려는 작업을 수행하였다. 그러나 다운받아서 설치를 하여도 .NetFramework가 설치되어있다는 메시지만 뜰 뿐이었다. 인터넷에서 여러가지를 살펴본 결과 Window10에는 .NetFramework가 설치되어 있으나 해당 기능이 비활성화 되어있다는 사실을 깨닫게 되었고 .NetFramework가 비활성화 ..

article thumbnail
웹에서의 스프링 IoC/DI
IT/SpringFramework 2019. 11. 21. 07:42

드디어 토비의 스프링 vol2의 공부를 시작한다. 토비의 스프링 vol1의 내용을 생각해보면 객체를 생성, 삭제 및 관계를 설정해주는 DI/IOC와 여러가지 기술을 유연하게 도입하거나 변경하게 해주는 서비스 추상화, OOP를 통해 모듈화 할수 없는 공통적으로 자주 쓰이고 여러곳에 산재되어 있는 코드를 모듈화해주는 AOP가 있다. 이러한 기술들을 기반으로 코드를 간단하고 유연하게 작성하도록 해주는 것이 스프링의 철학을 설명하고 있다. vol2의 경우 목차를 살펴보니 스프링 vol1의 경우 스프링의 근간이 되는 기술들에 다룬데 반하여 스프링을 사용하여 어플리케이션을 어떻게 작성하는지 실질적 업무에 쓰일수 있는(?) 기술에 대하여 나와있다. 하지만 이러한 기술들을 제대로 쓰려면 vol1을 꼭 봐야겠다는 생각도..

article thumbnail
Firebase란 무엇인가
IT/Firebase 2019. 11. 20. 11:56

최근 어플리케이션 개발에 관심이 있어서 개발에 유익한 소스코드나 툴 같은 것을 살펴보고 있는데 실시간 채팅이라던지 푸쉬 기능을 간단하게 해주는데 구글의 Firebase가 사용된다고 하여 궁금증이 생겨 해당 시스템에 대해 살펴보았다. 위키피디아를 살펴보면 2011년 파이어베이스사가 설립되고 2014년 구글에 인수된 모바일 플랫폼이라고 나와있다. 위키피디아에는 파이어베이스사의 역사에 대해서도 나와 있는데 James Tamplin, Andrew Lee가 설립한 인볼브로 부터 발전한게 파이어베이스사라고 한다. 초기에 파이어베이스는 다른 앱에서 채팅개발에 사용할 수 있는 API를 만들었는데, 이 API가 채팅 개발보다는 실시간 애플리케이션 동기화에 더 많이 쓰였다고 한다. 아무래도 채팅개발을 위해 만든 API이다..

article thumbnail
메이븐 설치
IT/Maven 2019. 11. 16. 19:05

개인적으로 자바 웹 개발을 꽤 많은시간을 하였지만, 아무런 의심없이 사용하던 기술이 메이븐이다. 예전 개발회사에 다녔을때 메이븐과 관련된 책을 읽었으나 책장 넘기기에 급급했던 나는 결국 메이븐을 제대로 이해하지 못하였고, 잘 사용하지도 못하였다. 그렇게 수년이 지나고 메이븐 책을 다시 읽어보니 뭔가 개념이 정리되는 느낌이고 메이븐을 나의 기술로 만들 수 있겠다는 생각에 까지 이르게 되었다. 책에 나온 예제를 수행하려면 메이븐을 설치해야 하는데, 메이븐 설치 및 설치확인에 대해 기술을 한다. 메이븐을 다운받으려면 일단 아래의 사이트에 들어간다. http://maven.apache.org/download.cgi Maven – Download Apache Maven Downloading Apache Maven..

article thumbnail
XML 파일정보를 읽기위한 Java API JAXB(Java Architecture for XML binding)
IT/JAVA 2019. 11. 15. 15:23

스프링 핵심 기술 활용하기 챕터를 공부하고 있는데 해당 부분에 코드와 sql 분리시키기라는 기술적 분야를 보고 있다. 코드와 sql을 분리시킬경우 xml로 분리하는 경우만 생각하고 있었는데, 토비의 스프링에서는 JAXB라는 기술을 설명한다. 여기서 JAXB란 JAXB(Java Architecture for XML Binding)의 약자이다. JAXB는 XML문서정보를 거의 동일한 구조의 오브젝트로 직접 매핑해준다. DOM은 XML정보를 마치 자바의 리플렉션 API를 사용해서 오브젝트를 조작하는 것처럼 간접적으로 접근해야 하는 불편함이 있다. 그에 비해 JAXB는 XML의 정보를 그대로 담고 있는 오브젝트 트리 구조로 만들어주기 때문에 XML 정보를 오브젝트처럼 다룰 수 있어 편리하다. JAXB 테스트를 ..

article thumbnail
Spring AOP의 토대가 되는 빈 후처리기를 이용한 프록시 객체 생성
IT/SpringFramework 2019. 11. 12. 14:15

스프링의 주요 기능은 DI, AOP, POJO, 서비스 추상화이다. 이 중 AOP 기능은 자주 사용하지만 AOP의 기반이 되는 기술을 잘 모르는 경우가 많다. 그래서 AOP의 기반기술이 되는 스프링의 빈 후처리기 및 프록시 객체 생성에 대하여 적어보고자 한다. 우리는 보통 소스코드를 작성할 때 목적에 맞게 클래스를 나누고 각 클래스 안에는 특수 목적을 가진 소스코드와 코드와 성능측정, 로그, 트랜잭션등 여러 클래스에 산재해서 많이 쓰이는 부가기능 코드를 작성한다. 그런데 이러한 부가기능이 각 코드에 산재해서 존재할 경우 소스코드의 응집도가 떨어질 수 있는 문제점이 있다. 그래서 이러한 핵심코드및 부가기능의 분리를 위해 프록시 패턴, 데코레이터 패턴등 많은 디자인 패턴이 생겨나게 되었다. 스프링에서는 이러..

article thumbnail
ElasticSearch 데이터 처리
IT/ElasticSearch 2019. 11. 5. 14:25

몇일에 걸쳐 Elasticsearch의 데이터 처리에 대해 공부를 했다. ElasticSearch에서 말하고 있는 데이터처리란 우리가 알고있는 CRUD 작업. 즉, 데이터의 Create, Retrieve, Update, Delete에 대한 작업을 지칭한 것이다. ElasticSearch에서의 CRUD 요청은 ElasticSearch서버에 REST 요청을 하면서 이루어 진다. 이 대목에서 과거 이전 회사의 다른 팀원이 ElasticSearch에 대해 발표하였을때 또다른 팀원이 질의하였던 것이 생각이난다. "Rest요청 말고는 데이터 처리요청방법이 없는가요?" 였는데, "네 Rest 요청밖에 없습니다."는 것이었다. 왜 Rest요청으로 밖에 데이터를 처리하지 못하겠는가 Rest처리 바로 뒤의 처리과정을 알면..