이번주에는 Spring에 대해서 공부하였습니다. Spring Bean Scope, MVC FrameWork, Spring Boot, Spring Application에 대해서 알아보았습니다. Spring Bean Spring에서 활용되는 POJO(Plain, Old Java Object)를 Bean이라고 부릅니다. POJO(Plain, Old Java Object) 특정 기술에 종속되지 않은, 순수한 자바로 만든 객체를 POJO라고 부릅니다. 이러한 객체를 사용하게 되면, 특정 기술에 종속되어 있지 않기 때문에, 확장성 측면에서 유리한 점이 존재합니다. Bean은 Spring IOC라는 컨테이너에 의하여 관리되며, 우리가 컨테이너에 공급하는 파일에 의하여 생성됩니다. 이때, Bean이 관리되는 범위를 Bean Scope라고합니다. @Component or @Configuration + @Bean의 조합으로 Bean이 등록됩니다. Sing
요즘 학교에 다니면서 학교 공부에 팀 프로젝트를 병행하고 있어서 글을 올리는게 뜸해졌습니다ㅠ 학교 공부, 팀 프로젝트, CS 공부 3개만 반복적으로 하고있는 것 같습니다... 4학년 되서는 널널하겠죠 뭐... 오늘은 공공데이터포털에서 제공하는 오픈 API를 활용하여 버스 시간을 알려주는 어플처럼 버스 시간 알림 로직을 만들어보았습니다. 팀프로젝트에 사용하게 될 로직이다보니까 어떻게 구현은 해야할 것 같은데, 공공데이터를 어떻게 받아와야하고, 어떤식으로 처리해야할지를 몰라서 막막하였습니다. 하지만, 막상 공공데이터포털에 들어가니 개발자분들을 위해서 어떻게 사용해야할지 적어주셔서 사용하기 매우 수월하였습니다. 일단 먼저 공공API를 활용하기 위해서는 공공데이터포털에 회원하가입하여 로그인을 진행해줍니다. 로그인을 진행하였다면, 버스 API 로직을 구현하기 위하여 몇가치 공공 API 사용 승인을 받아야합니다. 저는 3가지를 승인받아서 사용하였는데,  -> Controller -> Service -> Repository -> Service -> Controller -> 클라이언트(응답) 클라이언트의 요청을 Controller가 매핑함으로써 미리 정의된 기능인 Service를 실행하게 되는데, 해당 Ser
보통 Spring 서버가 동작하면서 @Controller나 @Service와 같은 어노테이션이 선언된 클래스나 인터페이스는 자동적으로 빈으로 생성하지만, 우리가 서비스를 구현하기 위하여 만든 객체들을 빈으로 생성해주어야하는 경우도 발생합니다. 이러한 경우에 우리는 @Bean 어노테이션, 혹은 @Component 어노테이션을 사용하곤 합니다. 두 어노테이션 모두 선언된 대상을 빈으로 만든다고는 대충 알고 있었으나, 정확히 어떠한 차이가 존재하는지는 알지 못하고 있었기에, 오늘 @Bean과 @Component 어노테이션 사이의 차이에 대하여 알아보았습니다. @Bean 먼저, @Bean 어노테이션입니다. @Bean 어노테이션의 경우, 우리는 보통 메소드 위에 선언된 모습을 많이 보아왔습니다. 다음과 같이 configure 메소드 상단에 @Bean이 사용된 것을 볼 수 있는데, @Bean 어노테이션의 경우에는 메소드의 반환형을 빈으로 등록하기 위하여 사용한다고합니다. 그
지난 번에 CRUD를 구현한 토이 프로젝트를 마치면서, 추후에 쇼핑몰과 같은 다른 웹 페이지를 만들어보겠다고 한 적이 있습니다. 쇼핑몰 웹 페이지를 구축하기 위해서는 일단 사용자에 따라서 사용자의 등급, 소유하고 있는 금액을 다르게 해주어야 하기 때문에 사용자를 식별할 수 있는 수단이 필요하게됩니다. 쇼핑몰 홈페이지의 회원이 아닌 사용자에게는 상품 구매 페이지가 열리지 않도록 설정하며, 회원의 등급에 따른 할인 정책 및 접근할 수 있는 권한등을 제공하기 위해서는 회원을 식별할 수 있는 무언가가 필요하게 됩니다. 이처럼, 사용자를 식별할 수 있는 수단을 우리는 JWT라고 합니다. JWT? JWT란 Json Web Token의 약자로, 단어에서 의미를 유추할 수 있듯이 Json 데이터에 Web Token의 정보를 담은 것입니다. 간단하게 토큰이라고 부르는데, 이러한 토큰을 활용하여 사용자가 허가를 받은 사람인지, 아닌지를 판단하게 됩니다. JWT의 구조 JWT는 3가
2주차에서 배운 내용을 복습하던 도중, 모르는 어노테이션이 나와서 알아보았습니다. 이제까지 스프링들의 어노테이션을 살펴보면서 느낀건데, 어노테이션들이 단어와 연관된 기능을 수행한다고 느꼈습니다. 그래서 단어의 뜻으로 살짝 유추해보면 거래라는 의미의 Transaction 과 연관되어 있을 것이라고 생각할 수 있습니다. MySQL에서 활용되는 Transaction과 비슷하다고 생각할 수 있는데, 시작부터 마무리까지 성공적으로 수행되어야 완벽한 거래라고 할 수 있는 것처럼, 시스템의 처리 역시 처음부터 끝까지 오류가 발생하지 않아야 성공적인 시스템의 처리라고 할 수 있습니다. 즉, @Transactional 어노테이션이 선언된 메소드의 경우, 메소드를 수행하던 도중 오류가 발생한다면, 메소드를 수행하기 이전 상태로 다시 되돌리는 기능을 수행한다고 합니다. @Transactional은 괄호를 통하여 추가적인 기능을 부여할 수 있는데, @Transactional(readOnly =