본문 바로가기


Java

[의존성과 아키텍처] 조영호작가님의 우아한 객체지향 강의 후기 및 정리 회사에 조영호작가님이 오셔서 우아한테크세미나에서 진행하신 의존성과 아키텍처 강의를 진행해주셨다. 오늘 쓸 내용은 그 강의에 대한 후기이자 정리이다. 정리 의존성 의존성이란 A와 B가 존재하고 B가 변경될 때 A도 변경되어야 하면 A가 B에 의존성을 가진다라고 할 수 있다. https://image.slidesharecdn.com/woowahanoo-190618171417/95/-3-1024.jpg?cb=1560916139 클래스 의존성의 종류 연관 관계 (Association) A가 B를 '영구적' 으로 의존하는 경우 대표적으로 객체참조가 이에 해당된다. 의존 관계 (Dependency) A가 B를 '일시적'으로 의존하는 경우 대표적으로 함수의 파라미터로 넘겨받는 경우나 리턴타입, 지역변수의 경우가 해당..
[JAVA Stream] stream(), peek()의 함정 Java8 에서 stream 에는 두가지의 반복문이 사용가능한데 peek() 과 forEach() 가 있다. 두가지의 차이점이라고하면 forEach 는 그자체만 사용가능하지만 peek() 은 그렇지 않다. 이유는 단순한데 forEach는 return 값이 void 라서 최종처리메소드로 쓰일 수 있지만 peek은 stream 을 return 해서 불가능하다. /*peek 구현체*/ @Override public final Stream peek(Consumer
[Java] Handlebars.java 써서 예약어 Template 으로 처리하기 Handlebars.java 버전 : 4.1.0 Java 버전 : open jdk 1.8 Mac Os : High sierra 라이브러리 주소: https://github.com/jknack/handlebars.java "Message's {{title}} and {{bod}}" 라는 문장에 title과 body를 동적으로 채워야 하는 처리가 필요할 때 사용할 수 있는 유용한 라이브러리를 소개하려고 한다. 핸들바(Handlebars)에서는 어떤 객체에 담긴정보를 템플릿화 시킬 수 있는 라이브러리를 제공 해주는게 그게 바로 TypeSafe Handlebars 이다 영어로 사용법이 소개되어있는데 매우 간단하다. public interface MessageTemplate extends TypeSafeTempl..
[Java] Jackson으로 Json <-> Object 변환(Transformation)하기 1. 개발환경 JDK 1.8 Jackson 2.8.8 Spring 4 IntelliJ IDEA 2018.1 2. Object -> Json (String) Object -> Json 변환과정은 Serialization 이라고 한다. Jackson은 String 이외에 file이나 stream에 쓰는것도 가능하다. public class Person { Person(String name, int age) { this.name = name; this.age = age; } Person(){ } String name; int age; public int getAge() { return age; } public String getName() { return name; } public static void mai..
[Java] .war .jar jarJava Archive 자바플랫폼에 소프트웨어나 라이브러리를 배포하기 위한 소프트웨어 파일포맷이다. 이 포맷에는 class파일, 리소스파일, 메타데이터 들을 압축하고 있다. 실제로 zip 파일 포맷으로된 압축파일이고 jar 명령어를 이용해 실행이 가능하다. warJava Web Application Archiveweb application을 위한 jar의 형태라고 생각하면 쉬울 것 같다. jar랑 다른 큰 특징은 WEB-INF 이 classpath가 있다는것?war ⊂jar 이런느낌이다 결국 war도 한 종류의 jar인 셈 서버배포할 땐 그래서 war든 jar든 올리면 된다. 그 외에도 다른 형태가 있는데 안드로이드 사용자들이 쉽게 볼만한 자바 아카이브 파일포맷은 apk가 있다.
[Spring] IntelliJ로SpringBoot 프로젝트 시작하기 개발환경운영체제 : Mac OS High Sierra IDE : IntelliJ IDEA Ultimate 2017.1.3 IntelliJ는 짱짱이다. 학생이라면 학생용 라이센스로 무료로 사용가능하니 꼭 IntelliJ를 쓰길바람 이클립스도 좋은 툴이지만.........나는이미 Jetbrains의 노예다 1. IDE를 켜고 Create New Project를 클릭2.Spring Initializer 를 누르면 이런 화면이 뜬다 SDK 선택하고 Next JAVA SDK 를 설치하는 방법은 구글에 검색하면 굉장히 많이 나오니 그것을 참고하기 바람 3.이름은 alias니 마음대로 변경가능하고 build Tool 선택후 Next 나는 Gradle를 쓰지만 이글을 보시는 분들은 마음대로 고르시면 된다. Spring..
[Java] final keyword(final 키워드) 1. final 변수 final의 의미는 최종의 라는 뜻입니다. 말그대로 더 이상의 값의 변화가 없어야 하는 변수가 있을 때 final을 붙여 final변수로 만듭니다. 예제1)public class Webtest { public static void main(String[] args){ //*final int a; final int a = 1; int tempv = 2; //* a = tempv; tempv = a; } } 예제1의 소스코드 중 //*로 주석처리 한 부분이 에러가 생기는 부분입니다. final은 최종이 되어야 하기 때문에 꼭 생성시에 초기화를 해주셔야 합니다. 그리고 생성한 이후에 다른 값으로 변경하는 것 또한 허용 되지 않습니다. 2. final class & method final ..
[Java] 멤버변수:클래스 변수, 인스턴스 변수 오늘은 자바의 멤버변수인 클래스 변수와 인스턴스 변수의 차이에 대해 포스팅하겠습니다. 1. 클래스 변수 클래스 변수란 클래스 내에서 static을 붙여서 선언하는 변수를 말합니다. 클래스 변수는 한번 선언되면 해당 클래스의 모든 인스턴스가 같은 저장공간을 가리킵니다. 전역변수라고 부르기도 합니다. 같은 저장공간을 가리킨다는 것이 무슨 의미인지는 다음 예제를 보면 이해하기 쉬울 것입니다. public class Webtest { static int sval = 123; public static void main(String[] args) { Webtest ex1 = new Webtest(); Webtest ex2 = new Webtest(); System.out.println(ex1.sval); ex2.s..