Gradle과 Maven 을 설명하기 전에 우선 빌드와 빌드도구가 무엇인지에 대해서 알아야 합니다.빌드란 프로그램을 실행 가능한 배포 파일을 만들어 내는 것을 의미합니다. 즉, 소스 코드를 컴파일하고, 컴파일된 클래스 파일과 리소스 파일등 프로그램 실행에 관련된 파일들을 패키징 하여, 배포 가능한 형태로 만드는 것을 의미합니다.빌드가 생성되는 과정에서 이루어지는 과정컴파일, 테스트, 패키징, 의존성 관리, 배포, 클린업, 리포트 빌드 도구는 이러한 일련의 빌드 과정을 자동화해주는 소프트웨어입니다. 설정 파일을 통해 필요한 작업을 정의하고 클릭 한 번으로 모든 의존 라이브러리(jar 파일) 을 다운로드해 컴파일하고, 테스트하고, 패키징하여 배포까지 자동으로 처리할 수 있습니다. 이로 인해 배포 작업이 간편..
자바 8 부터 람다식과 함께 사용하던 코드를 더 간결하고 강력하게 만들 수 있는 함수형 인터페이스들이 추가됐습니다.따라서 대표적인 함수형 메서드를 정리해 보았습니다.미리 들어가기에 앞서 람다 Stream 사용 시 단순 for 문 혹은 while 문 보다 성능이 떨어집니다.또한 불필요하게 너무 사용하게 되면 오히려 가독성을 떨어트릴 수 있습니다.일단 Stream 이란먼저 유용한 람다식 함수들을 배우기 전에 Stream 이란 무엇인지 간단하게 설명하겠습니다.Stream 은 데이터(리스트, 배열 등) 를 한줄(Stream)로 흘려보내면서 필요한 작업(변환,필터링등) 을 수행하는 기능입니다.쉽게 말해, 데이터를 하나씩 순서대로 흘려보내면서 변형하는 파이프라인 같은 것입니다.데이터 자체를 변경하지 않고, 가공해서..
가끔 기억이 나지 않을 때 참고하려고 정리했습니다. 자바에서는 반복문이 기본적으로 5가지가 있습니다.4가지라고 생각하실 수 있지만 Lamda 를 이용한 반복문까지 포함했습니다. 자바의 반복문for 문반복횟수가 정해져 있을때 사용하면 좋습니다.초기값, 조건, 증감식을 사용해서 반복을 제어합니다.public class ForLoopExample { public static void main(String[] args) { for (int i = 1; i 실행 결과i = 1i = 2i = 3i = 4i = 5 while 문반복횟수가 정해지지 않았을 때 사용하면 좋습니다.조건이 true 일 동안 계속해서 반복합니다.public class WhileLoopExample { public st..
스프링 IoC 컨테이너스프링의 IoC 컨테이너는 Bean 객체들을 책임지고 의존성을 관리합니다.객체들을 관리한다는 것은 객체의 생성부터 소멸까지의 생명주기( LifeCycle ) 관리를 개발자가 아닌 컨테이너가 대신해준다는 말입니다. 그로 인해 개발자는 객체 관리의 주체가 프레임워크( Container ) 가 되기 때문에 로직에 집중할 수 있는 장점이 있습니다.스프링 빈의 LifeCycle스프링 컨테이너 생성 → Bean 생성 -> 의존성 주입 → 초기화 콜백 → Bean 사용 → 소멸 전 콜백 → 스프링 종료빈 생명주기 콜백의 필요성먼저 콜백에 대해 설명하면, 주로 콜백함수를 부를 때 사용되는 용어이며 콜백함수를 등록하면 특정 이벤트가 발생했을 때 해당 메소드가 호출됩니다. 즉, 조건에 따라 실행될 수..
빈이 2개 이상일 때 생기는 오류스프링에서는 같은 타입의 빈이 여러 개일 때, 어떤 빈을 사용할지 모호성이 발생합니다.예를 들어 @Autowired 는 타입으로 빈을 조회하기 때문에 interface 가 discountPolicy 인 구현체가 2개 이상이라면 오류가 발생합니다. 당연하게도 discountPolicy 로 만든 구현체가 하나여야 하는데 2개 이상이라서 어떤 구현체를 불러와야 할지 모르기 때문입니다.@Componentpublic class FixDiscountPolicy implements DiscountPolicy {}@Componentpublic class RateDiscountPolicy implements DiscountPolicy {}@Autowiredprivate final Disc..
의존성 주입 ( DI )의존성 주입(Dependency Injection, DI)은 객체 지향 프로그래밍에서 객체 간의 관계를 설정하는 방식 중 하나입니다.객체가 필요한 의존성( 다른 객체 )을 직접 생성하지 않고 외부에서 주입받는 방식을 말합니다.이를 통해 객체 간의 결합도를 낮추고, 유연한 코드와 테스트 가능성을 높일 수 있습니다. 만약 우리가 자동차를 만들고 있다고 했을 때, 자동차는 엔진, 타이어, 핸들 등 여러 부품이 필요합니다. 만약 자동차가 엔진을 스스로 만들어야 한다면, 자동차 클래스 내부에서 엔진을 직접 생성해야 합니다. 이 경우, 자동차와 엔진이 강하게 결합되어 있어서 자동차를 테스트하거나 엔진을 교체하는 것이 매우 어렵습니다. 하지만 의존성 주입을 사용하면, 자동차가 엔진을 외부에서 ..
간단한 설명Tomcat 은 웹 서버 소프트웨어 중 하나로, Java 로 만들어진 웹 애플리케이션을 실행할 수 있게 도와주는 프로그램입니다.쉽게 말해, Java 프로그램이 인터넷에서 동작할 수 있게 만들어주는 도구라고 생각하면 됩니다. 들어가기에 앞서톰캣을 설명하기 전에 혹시나 WAS , 웹 서버를 모르는 분들을 위해 설명하겠습니다.웹 서버란웹 서버는 우리가 인터넷 브라우저(크롬, 엣지등) 를 사용해 웹사이트를 볼 때, 그 웹사이트의 데이터를 보내주는 역할을 합니다. 만약 네이버에 접속하면, 네이버의 웹 서버가 네이버 화면을 여러분에게 보내줍니다.WAS(Web Application Service)WAS 는 웹 서버와 웹 컨테이너의 결합으로, 다양한 기능을 컨테이너에 구현하여 다양한 역할을 수행할 수 있는 ..