오늘은 Java의 ... 표현에 대해서 알아보려고한다. 이 표현을 최근에 접해보면서 알게되었는데, 생각해보면 가끔 코딩을 하다가 파라미터를 받을 때 ... 같은 표현을 본 적이 있는 것 같다. 이 표현의 이름은 ellipsis 뜻 풀이 하자면 생략이다. (가변길이 파라미터 또는 가변인자라고도 불린다) 같은 유형의 타입을 여러개 받아도 처리 할 수 있게 해주는 역할을 해준다. 이렇게 말하면 살짝 이해가 안될 수도 있을 것 같아 예제 코드를 살펴보자. public class Main{ public static void main(String[] args) { String[] name = {"GG", "_", "BB"}; print("GG_BB"); System.out.println("\n"); prin..
오늘은 API라는 것에 대해서 알아보려고한다. API는 개발을 하다보면 어디선가 한 번쯤은 들어봤을 법한 단어이다. API? 프로그래밍 할 때 편하게 짤 수 있게끔 도와주는 거 아닌가? 그렇다면 라이브러리는 뭐지? 라고 생각하면서 점점 복잡해지게 되는 것이다. 이러한 개념을 확실하게 정리해보도록 하자. API(Application Programming Interface, 응용프로그램 프로그래밍 인터페이스) API는 말 뜻대로, 응용프로그램에서 사용하기 위한 목적으로 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있도록 하는 인터페이스를 말한다. 예를 들어, 우리가 흔히 이용하는 유튜브에서 데이터를 가져오려면 유튜브 API를 통해서 원하는 데이터들을 가져오거나 기능을 실행할 수 있는 것..
이번 글에서는 의존관계 주입 방법에 대해서 더 자세히 다뤄볼 것이다. 지금까지의 예제에서는 빈 등록을 이용해서 단순히 실행만 시켜보는 구조였기에 객체간의 의존관계 주입이 없었다. 그렇기에 이번에는 의존관계에 대해 설명 못한 것들(종류, 좋은 방법, 활용하는 법 등)에 대해서 알아보려고 한다. 전 글들에서 언급했던 @Autowired 나 생성자 주입의 중요성과 Lombok도 이 곳에서 모두 다룰 것이다. 그럼 먼저 종류에 대해서 살펴보자. 생성자 주입 @Component public class StuService implements Service{ private final Repository repository; public StuService() {} @Autowired public StuServ..
이번 글은 싱글톤에 대해서 정리해보려고 한다. Spring에 대한 내용만은 아니지만 연관되어 이야기 할 수 있기에 정리해볼 것이다. 싱글톤 패턴이란 객체의 인스턴스가 딱 1번만 생성되는 패턴을 말한다. 예를 들어보자면, 어떤 프로그램 내에서 고객은 기능을 실행하기 위해 객체를 생성해야만 할 것이다. 그럴 때 같은 기능인데도 불구하고, 고객이 여러명이면 객체를 여러개 생성할 수 밖에 없을 것이다. 싱글톤 패턴은 이런 상황에서 객체를 1번만 생성하고 그 객체를 이용할 수 있게 하는 패턴인 것이다. 그렇다면 이 싱글톤 패턴은 어떻게 사용하는지 살펴보자. 이른 초기화 방법 public class SingletonService { private static final SingletonService in..
이번 글은 드디어 의존관계 주입을 하는 방법들에 대해서 알아보려고 한다. 첫번째 글에서는 xml 파일을 만들어 Spring을 통해 의존관계를 주입해주는 예를 들었었다. 그 방법은 이제 Spring의 기능을 직접 이용하지 않고, 파일을 직접 불러와서 해결했던 방법이었기에 생각보다 어려워 보였을 것이다. 하지만 이번에 소개할 방법을 Spring에서 제공하는 기능들을 통해서 의존관계 주입을 해보려고 한다. 일단 먼저 다형성만을 이용해 문제가 된 코드를 예로 들어보겠다. public class Main { public static void main(String[] args) { Repository repository = new StuRepository(); Student stu1 = new Student(1..
이번에는 좋은 객체지향 설계를 위한 5가지 원칙인 SOLID에 대해서 정리해보려고 한다. 원래는 의존성 주입하는 방식들에 대한 글을 쓰려했으나 이것을 먼저 정리하는 것이 좋을 것 같다고 생각되어 정리하게되었다. SOLID 원칙같은 경우에는 굳이 Spring이 아니더라도 좋은 객체지향 프로그램을 만들고 싶다면 지켜야 될 원칙이다. 어떤 내용인지 한 번 살펴보자. 1. SRP (Single Responsibility Principle, 단일 책임 원칙) 단일 책임 원칙이란 한 클래스는 하나의 책임만을 가져야 한다는 원칙이다. 예를 들어서 학생들을 저장하고 조회하는 기능을 만드려고 하는데, 이 클래스 내에서 프로그램의 실행까지 이루어진다면, 이는 한 클래스가 하나의 책임이 아닌 여러 책임을 가지게 되는 것..
오늘은 static import에 대해서 알아보려고 한다. 그동안 개발을 하면서 들어본 적이 없었기에 매우 편리한 기능이라고 생각되었다. 어떤 기능인지 한 번 살펴보자. public class Main{ public static void main(String[] args) { System.out.println("GG_BB"); } 쉽게 알아보기 위해서 누구나 한번 쯤은 써봤을 println을 예제로 사용하겠다. 위 코드는 그저 GG_BB라는 구문 하나를 출력하기 위한 코드이다. 이 코드에 static import를 적용시켜보겠다. import static java.lang.System.*; public class Main{ public static void main(String[] args) { out...
이번에는 Spring에 대해서 정리해볼려고 한다. 스프링은 무엇일까? 스프링이란 자바 플랫폼을 위한 자바 기반 프레임워크로써 객체지향 언어인 자바의 특성을 살리는 것을 도와준다. 쉽게 생각하자면 그동안 배운 자바를 활용할 수 있는 확장 라이브러리이며, 좋은 객체지향 프로그램을 만들 수 있도록 도와준다는 것이다. 이러한 스프링은 여러 특징을 가지고 있다. 1. POJO 기반 POJO(Plain Old Java Object) 기반은 그대로 해석해보자면 오래된 자바 객체를 기반으로 한다는 뜻인데, 이는 스프링에서 객체간의 관계를 구성할 때 별도의 API를 사용하지 않고, 그냥 Java 코드만을 사용해서 객체를 구성할 수 있다는 것이다. 별도의 다른 라이브러리 등을 숙지하지 않아도 된다는 것이다. ..
이번 글에선 컬렉션 프레임워크에 대해서 정리해보려고 한다. 컬렉션 프레임워크는 프로그래밍에 있어서 필수불가결한 요소라고 생각한다. 저번에 설명한 스트림도 컬렉션을 활용할 수 있는 것이고, 기본적으로 배열같은 데이터는 실무에서나, 혼자 코딩할 때나, 코딩테스트를 할 때도 거의 항상 들어가기 때문이다. 그렇기에 더 자세히 이해하고 활용할 수 있어야겠다는 생각을 하게 되었다. 그렇다면 한번 시작해보자. 일단 컬렉션에 대해 설명하기 전에 사진을 보며 종류에 대해서 살펴보자. 컬렉션 프레임워크는 인터페이스로 구현되어있다. 그 인터페이스(컬렉션)으로 구현되어있는 것들이 List, Set, Map인데 이 컬렉션 인터페이스들을 통해 구현한 것들(ArrayList, HashMap 등)을 컬렉션 클래스라고 불린다...
이번 글에서 다룰 주제는 Java SE 8버전에서 추가된 Lambda(람다) 표현식과 Stream API에 대해서다. 나는 애석하게도 Lambda 에 대한 것이나 Stream 을 배워본 적이 없어서 활용해보질 못했었다. 그렇기에 더욱 더 제대로 공부해야겠다고 생각이든다. 이번 글에서 설명할 람다 표현식과 스트림을 이용하면 많은 장점이 있다. 기존의 불필요한 코드를 줄여주고, 가독성을 높여주며 효율 면에서도 좋은 효과를 줄 수 있다. 대체 어떤 방식이길래 그러는지 정리해보겠다. 1. Lambda 표현식 람다 표현식은 식별자 없이 실행이 가능한 함수를 만들 때 쓰인다. 이 한줄을 보면 식별자가 없는데 어떻게 실행을 하지? 라는 생각이 들 수도 있다. 자바스크립트를 해봤다면 변수에 함수를 넣어서 익명함..
오늘은 자바 프로그램의 기본 구조에 대해서 정리해보려고 한다. 오늘 설명하는 내용은 기본적인 내용이기도 하지만, 면접질문에도 많이 나오고, 객체지향에 대한 중심이 담겨 있다고 생각한다. 얼핏하면 헷갈리는 것들도 정리해서 잘 기억할 수 있도록 해야겠다. 자바 프로그램의 기본 구조 우리가 자바 코딩을 하기 위해 무언가를 추가할 때, 많은 선택지가 있다. Class, Interface, Enum, Annotation 까지... Class와 Interface 까지는 들어봤어도 Enum? Annotation?? 할 수도 있을 것 같다. 하지만 그리 어렵지는 않은 개념들이니 정확히 알아두고 활용해보는 게 좋을 것이다. 1. Class 첫 번째로는 자바를 처음 배우게 되면 맞이하게 되는 클래스이다. 클래스..
Java의 기본다지기를 해보려고한다. 아무래도 기본이 조금 부족한 걸 여러모로 느껴서, 처음 시작하는 느낌으로 돌아가 Java에 대한 걸 처음 부터 시작해서 끝까지 모르는 것이 없을 정도로 하나하나 이해하면서 넘어 갈 생각이다. 오늘의 기본은 조금 고리타분하게 들릴 수도 있는 Java에 대해서이다. JAVA? 자바언어는 객체 지향적 프로그래밍 언어이다. 객체지향(Object-Oriented Programming, OOP)은 명령어들이 합쳐져 만들어진 컴퓨터 프로그램을 하나의 독립된 단위로 보는 것을 말한다. 각 객체들(각 기능들)은 메시지를 주고받고 데이터를 처리하여, 프로그램을 유연하고 용이하게 변경할 수 있게 한다. 쉽게 말하자면 개발한 요소(클래스) 하나하나가 객체가 되고 그 요소끼리 상호작..