해당 글은 2023년 3월 1일 작성된 포스트입니다. 최근 프로젝트를 수정하면서 테스트가 가능한 코드에 대해 고민했다. 갑자기 고민한 것은 아니고 내가 작성한 코드가 테스트하기 좋지않다는 것을 느꼈기 때문이다. 기존 코드의 문제점 프로젝트에 jsoup라이브러리를 사용하여 웹 사이트를 크롤링하는 기능이 있었다. 첫 번째 문제점 Jsoup 라이브러리를 사용하려면 Jsoup 클래스의 connect 스태틱 메서드를 사용해서 jsoup Connection을 연결했어야했다. 이를 아래와 같이 작성했다. // JobSearchServiceImpl.java ... String url = "크롤링할 URL"; Connection connection = Jsoup.connect(url); Document documenet..
전체 글

해당 글은 2022년 12월 15일 작성된 게시글입니다 최대한 객체지향적으로 개발을 하려고 하다보니 객체지향에 대해 전혀 모르고 있었다는 것을 깨달았다. 자바언어도 공부하고 싶던 찰나에 객체지향에 대해 자세히 알고싶었다. ( 답답했음.. ) 객체지향의 사실과 오해 ( 조영호 저 ) 항간에 객체지향에 대해 공부하는 데 좋기로 매우 유명한 책을 e-book으로 구매했다. 아침과 저녁 이동시간에 짬짬이 보고있다. 학부시절 배웠던 객체에 대해 생각해보면 객체는 클래스가 틀이고 어쩌고 뭐 항상 이런 식으로 배웠던 것 같다. 이 책의 첫 장을 보기 전까지는 객체는 그저 클래스안에 정의된 어떤 Thing... 이라고만 추상적으로 알고있었다. 저자는 객체를 협력과 역할과 책임 관점에서 바라보고 책을 집필했다. 매우 신..

데이터베이스 연결 자바에서 데이터베이스에 연결하려면 다음과 같은 작업이 필요하다. Connection는 DB와 TCP/IP 통신을 통해 연결되는 것이고, Statement는 SQL문을 전달하는 것, ResultSet은 DB로 부터 데이터를 조회하는 것을 말한다. 현재는 DB라고 그려놨지만 해당 DB가 MySQL 이라면 어떨까? 큰 틀의 변화는 없지만 MySQL 전용 Connection, Statement, ResultSet이 필요하다. 아마 오라클로 변경하더라도 오라클 전용 Connection, Statement, ResultSet으로 Oracle DB와 연결하여 사용될 것이다. 이렇듯 각 데이터베이스는 틀은 같지만 연결, 쿼리 전달, 데이터 조회하는 구체적인 방법(코드)은 모두 다르다. 하지만 여기서 ..
나는 스프링부트를 사용한 웹 애플리케이션을 개발하고 있다. 업무 중 Global하게 사용되는 환경설정 파트를 개발해야 했다. 그냥 환경설정이라면 static같은 건 고려할 필요도 없었다. 하지만 환경설정 값이 1~2초 마다 도는 스케줄러에 사용되었다. 나는 static을 사용하는 것과 getter, setter를 사용하는 것 중 무엇이 좋을 지 고민하게 되었다. setter, getter 사용 환경설정 값을 가지고 있는 Holder 객체를 만들고 해당 객체를 빈으로 등록한 뒤 초기값을 @PostContruct 메서드로 초기화하여 setter, getter로 관리하려고 했다. 이 방법으로 설정하면 객체지향적이고 객체에 자율성을 준다고 생각했다. static 사용 이 방법 역시 전과 마찬가지로 @PostCo..

원활한 프로그램의 작동을 위해서는 예외처리는 필수적이다. 이번 포스팅에서는 자바에서 예외처리를 하는 방법에 대해 알아본다. 예외처리란? 자바에는 에러(Error)와 예외(Exception)가 있다. 에러는 하드웨어적인 문제로 오류가 발생하는 것인데, 개발자의 코드 작성으로는 어쩔도리가 없는 문제이다. 그와 달리 예외는 개발자가 코드로 어쩔도리 있는 문제이다. 예외란 사용자가 잘못 사용하거나, 코드로 인해 발생하는 문제를 말한다. 예외의 종류 자바의 예외에는 체크예외(혹은 일반예외)와 언체크예외(혹은 런타임예외)가 있다. 체크 예외(Checked Exception) 체크 예외는 일반 예외(Exception)라고도 불리며 자바 파일이 컴파일 될 때 체크되는 예외이다. 체크 예외가 있으면 컴파일 할 수가 없으..

들어가며 동일성과 동등성에 대해 본격적으로 들어가기에 앞서 JAVA의 모든 객체의 최고 조상인 Object에 대해 먼저 알아본 뒤, 동일성과 동등성에 대해 알아본다. 모든 객체의 조상 Object 자바의 java.lang 패키지에 포함된 Object는 모든 객체의 조상이다. 보통 자바에서 상속을 하기 위해서는 아래와 같이 작성해야한다. public class TestObject extends Object { ... } 하지만 예외적으로 Object는 모든 객체의 조상이므로 생략하더라도 Object의 자손이 된다. public class TestObject {} public static void main(String[] args) { TestObject testObject = new TestObject()..