전체 글(198)
-
IOC와 DI
컨테이너란 컨테이너는 보통 객체의 생명주기를 관리하며, 생성된 객체들에게 추가적인 기능을 제공하도록 하는 것을 의미합니다. 다시 말해, 컨테이너란 개발자가 작성한 코드의 처리과정을 위임받은 독립적인 존재입니다. 컨테이너는 적절한 설정만 되어 있다면 개발자가 작성한 코드를 스스로 참조한 뒤 알아서 객체의 생성과 소멸을 제어합니다. IOC란 일반적인 프로그래밍은 main메소드에서 시작해서 개발자가 미리 정한 순서를 따라 객체가 생성되고 실행됩니다. 그러나 서블릿의 경우를 보면, 개발자가 서블릿을 개발해서 서버에 배포할 수는 있지만 직접 제어할 수 있는 방법은 없습니다. 대신 서블릿에 대한 제어 권한을 가진 컨테이너가 적절한 시점에 서블릿 클래스의 객체를 만들고 그 안의 메소드를 호출합니다. 이처럼 개발자가 ..
2020.03.27 -
Spring 설정을 XML에서 Java Config로 바꾸기
Spring 설정을 XML에서 Java Config로 하는 이유 수정 시 재배포는 XML이든 Java Config든 같음 XML은 문서가 길어지면 가독성이 좋지 않음 XML은 단지 문서일 뿐이므로 휴먼 에러를 인지하는 타이밍이 컴파일 단계에서 알아 차릴 수 있는 Java Config보다 느림 Annotation 메타 정보 활용 Annotation을 이용한 프로그래밍 방식이란, Java 리플렉션 API를 이용해 Annotation의 메타 정보를 조회하고, Annotation 내에 설정된 값을 가져와 작업을 수행합니다. Anotation은 Spring이 참조하는 메타 정보로 사용되기 때문에 유리한 점이 많습니다. Spring 설정 파일을 따로 관리할 필요가 없음 XML보다 명료함(XML은 설정이 많아지면 파..
2020.03.27 -
Unit Test
UnitTest란 UnitTest의 개념 프로그래밍에서 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차입니다. 즉, 모든 함수와 메소드에 대한 테스트 케이스를 작성하는 절차를 말합니다. 이를 통해 언제라도 코드 변경으로 인해 문제가 발생할 경우, 단 시간 내에 이를 파악하고 바로잡을 수 있도록 해줍니다. Unit Test를 만드는 이유 첫 번째는 프로그램이 크고, 메모리가 많이 들고, 다른 리소스(DB 등)이 필요한 경우 로컬 환경에서 쉽게 코드를 실행시켜 보기 어렵기 때문입니다. 그래서 개발자들은 Unit Test를 통해 빠르게 자신의 코드가 정상적으로 작동하는지 확인할 수 있습니다. 두 번째는 dependency가 있는 다른 클래스들에서 버그가 나는 것을 방지하기 위함입니다. 다..
2020.03.27 -
PMD / CheckStyle / Findbugs
정적 분석 정적 분석은 소프트웨어를 분석하는 방법의 하나로 소프트웨어를 실행하지 않고 코드 레벨에서 분석하는 방법입니다. PMD란 PMD의 개념 PMD는 Java의 잘못된 코드를 검사해주는 정적 소스 코드 분석 도구입니다. PMD에는 기본 제공 규칙 세트가 포함되어 있으며 사용자 지정 규칙을 작성할 수 있습니다. 그리고 PMD는 단독 형태로도 사용할 수 있으며, 이클립스나 IntelliJ와 같은 IDE에 플러그인 형태로 배포되어 사용할 수도 있습니다. PMD 점검 기준 기준 설명 표준 코드 기준(Compliance with coding standards) - 명명 규칙: 클래스, 메소드, 파라미터, 변수 이름 - 클래스 및 메서드 길이 - 주석 및 JavaDocs의 존재 및 서식 코드 안티 패턴(Codi..
2020.03.27 -
MyBatis
MyBatis란 MyBatis의 개념 MyBatis는 Java 오브젝트와 SQL문 사이의 매핑 기능을 지원해 Java의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있도록 도와주는 개발 프레임워크입니다. JDBC를 통해 데이터베이스에 액세스하는 작업을 캡슐화하고 일반 SQL 쿼리, 저장 프로시저 및 고급 매핑을 지원하며 모든 JDBC 코드 및 매개 변수의 중복 작업을 제거합니다. MyBatis의 특징 SQL 쿼리들을 한 파일에 구성하여 프로그램 코드와 SQL을 분리할 수 있음 복잡한 쿼리나 다이나믹한 쿼리에 강함 데이터 조회 결과를 사용자 정의 DTO, MAP 등으로 맵핑하여 사용 가능 복잡한 JDBC 코드를 걷어내어 깔끔한 코드를 유지할 수 있음 접근하기 쉽고 간단한 퍼시턴스 프레임워크 MyBa..
2020.03.26 -
DBCP
DBCP란 DBCP의 개념 DBCP란 DataBase Connection Pool의 약자로 DB와 커넥션을 맺고 있는 객체를 관리하는 역할을 합니다. 일반적으로 JDBC를 이용한다면 아래와 같은 순서로 DB에 접속합니다. DB 접속을 위한 JDBC 드라이버 로드 getConnection 메소드로부터 Connection 객체를 얻음 쿼리 수행을 위한 PreparedStatement 객체 생성 executeQuery를 실행해서 결과를 받아옴 처리가 완료되면 사용된 리소스들을 close하여 반환 이처럼 JDBC는 DB에 연결할 때마다 드라이버를 로드하고 Connection 객체를 얻는 작업을 반복합니다. 이에 반해 DBCP는 WAS 실행시, 일정량의 Connection 객체를 생성하고 Pool이라는 공간에 저..
2020.03.26