목록Spring (21)
DOing
이전 프로젝트에서는 Request로 오는 객체를 모두 Service단에서 검증했었다. 그러다보니 Service단이 너무 뚱뚱해지는 기분이 들었다. Service단은 핵심 비지니스 로직에만 집중할 수 있게 만들어야한다고 생각하며 다른 방법을 알아보던 중 Bean validation이라는 것을 알게되었다. 🌱 Bean validation Bean validation은 클래스의 필드에 annotation을 이용하여 필드가 갖는 제약 조건을 정의하는 구조로 이루어진 검사다. validator가 그 클래스로 생성된 객체의 유효성 여부를 확인한다. 어떠한 비즈니스적 로직에 대한 검증이 아닌, 객체 자체의 필드에 대한 검증을 한다. 🌱 build.gradle에 의존성 추가 // Spring Boot Bean Vali..
🌱 ORM 이란? ORM 이란 Object-Relational Mapping 의 약자로, 이름 그대로 객체(Object)와 관계형 데이터(Relational data) 를 매핑하기 위한 기술이다. 이러한 매핑이 필요한 이유는 객체 지향 언어과 관계형 데이터베이스사이의 패러다임 불일치가 있기때문이다. 이 둘 간의 패러다임 불일치 때문에 개발자는 더 많은 코드를 작성해야 하며, 이는 반복적이고 실수하기 쉬운 작업이 된다. 그렇기 때문에 개발자는 객체지향적인 설계에 집중할 수 없게 된다. ORM이 바로 이러한 문제를 해결해 준다. 🌱 패러다임 불일치 객체 지향 프로그래밍과 관계형 데이터베이스 사이의 데이터 표현 방식이 달라서 생기는 문제를 패러다임 불일치라고 한다. 패러다임 불일치가 일어나는 이유는 애초에 이..
🐛 테스트의 중요성 : 버그 버그란, 소프트웨어가 예상하지 못한 결과를 내는 것을 말한다.(위키백과) 서비스 중에 버그가 발생하게되면 사용자들에게 불편함과 회사의 악영향을 끼칠 수 있기때문에 서비스가 릴리즈 되기전, 즉 코드가 배포되기 전에 버그를 최대한 찾아내는 것이 중요하다. 이런 버그를 찾아내기 위해 다양한 테스트가 존재한다. 테스트 종류는 여러가지 분류기준에 따라서 다양하게 이름 붙여질 수 있다. 🐛 테스트의 종류 : 블랙박스 vs 화이트 박스 1. 블랙박스 테스트 블랙박스 테스팅이란 소프트웨어 내부 구조나 동작원리를 모르는 블랙박스와 같은 상태에서, 즉 웹 서비스의 사용자 입장에서 동작을 검사하는 테스트 방식이다. 1) 장점 : 개발자부터 디자이너, 사장님까지 누구나 테스트 가능하다. 2) 단점..
스프링의 본질은 엔터프라이즈 서비스 기능을 POJO에 제공하는 것이다 - Professional Spring Framework, 2005 🌱 POJO란? Plain Old Java Object, 단순한 자바 오브젝트 POJO란, 객체 지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 말한다. 그러한 POJO에 애플리케이션의 핵심로직과 기능을 담아 설계하고 개발하는 방법을 POJO 프로그래밍이라고 할 수 있다. 🌱 POJO의 조건 1. 특정 규약에 종속되지 않는다. 자바언어와 곡 필요한 API외에는 종속되지 말아야한다. EJB2와 같이 특정 규약을 따라 만들게 하는 경우는 대부분 규약에서 제시하는 특정 클래스를 상속하도록 요구한다. 그럴 경우 ..
스프링 프로젝트를 마무리하고 하니, '내가 과연 스프링 프레임워크를 제대로 사용할것일까?'라는 의문이 들어서 요즘에는 스프링 프레임워크의 코드 예제가 많이 있는 서적보다 스프링 프레임워크의 개념에 대해 설명하는 서적을 보고 있다. 그중 '토비의 스프링 3(이일민 저)'의 8장 스프링이란 무엇인가를 읽고 정리하려고 한다. 🌱 스프링 정의 스프링에 대해 가장 잘 알려진 정의는 다음과 같다. 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크 👉 자바 엔터프라이즈 개발을 편하게? : 보안, 트랜잭션과 같은 엔터프라이즈 개발에서 요구되는 기술에 신경쓰지 않고 비지니스 로직에만 집중할 수 있게 만든다는 의미이다. 👉 오픈 소스? : 스프링의 오픈소스 라이브러리는 아파치 라이선스 2.0이..
Spring 프로젝트 중에 Domain, Entity, VO(value object)라는 용어들이 반복적으로 등장하지만, 정작 이들의 차이를 모르고 있다는 생각이들었다. 이에 관련되어 더 공부하고자 DDD START 도메인 주도 설계(최범균 저)의 책을 읽고 정리하였다. 💡 도메인(Domain) 온라인서점 사이트에서 책을 조회하고 구매한다고 가정하자. 개발자 입장에서 온라인서점은 구현해야할 소프트웨어의 대상이 된다. 온라인서점 소프트웨어는 상품의 조회, 구매, 결제등의 기능을 제공해야한다. 이때 온라인 서점은 소프트웨어로 해결하고자하는 문제 영역, 즉 도메인(domain)에 해당된다. 한 도메인은 다시 하위 도메인으로 나눌 수 있다. 예를 들어 '온라인 서점' 도메인은 다시 주문, 결제, 배송같은 하위 ..
약 4달간 진행해온 Spring 팀 프로젝트를 마치고 있습니다. 그에 대한 회고를 해보려고 합니다. [ 계기 ] 웹 개발로 진로를 정하고 가장 먼저 했던 고민은 '그래서 무슨 언어를 선택하지?' 였습니다. 이에 대한 답은 대학시절 가장 많이 좋아했던 Java였습니다. 재학생 시절 c, c++, java, python, (약간의 js)를 모두 배우는 동안 가장 매력을 느꼈던것은 java를 앞으로 더 사용해보고 싶었습니다. 그 다음은 사용할 프레임워크를 선택하고자 하였습니다. 자바의 대표적인 프레임워크는 'Spring Framework'입니다. 요즘에는 스프링 부트도 많이 사용하는 추세이고, 초보자들은 스프링 부트로 시작하는 것이 편하다라는 말을 많이 듣고 스프링부트를 시작하였습니다. 하지만 처음 인프런의 ..
이전 포스팅에서는 대표적인 빌드 도구로 꼽히는 Ant, Maven, Gradle을 비교해보았다. 오늘은 이 중에서 Maven에 대하여 더 자세히 다뤄보겠다. Spring 프로젝트를 하면서 당연하게 생각하고 있었는데 이번 기회에 Maven에 대해 자세히 알고 사용하면 좋을 것같다. 💡 Maven? 자바용 프로젝트 관리도구 Apache에서 Ant의 대안으로 개발하였다. 정해진 라이프사이클에 의하여 작업 수행하며, 전반적인 프로젝트 관리 기능까지 포함한다. 모든 빌드 단위에 대한 라이프 사이클이 예약되어있어 개발자가 임의로 변경할 수 없다. 의존성을 설정하여 라이브러리 자동 관리 pom.xml에 라이브러리를 정의해놓으면 자동 관리해준다. 💡 Maven 라이프 사이클 Maven에서는 default lifecyc..