분류 전체보기 288

4. 아이템[4] - 인스턴스화를 막으려거든 private 생성자를 사용하라

1. 서론 지난 시간에는 private한 생성자를 만들어 인스턴스를 생성하는 것을 방지하고, public 한 정팩매를 만들어 같은 인스턴스를 보장해주는 방법에 대해 포스팅했습니다. 덧붙여 enum 타입을 이용하여 싱글 ENUM을 생성, 처리하는 방법도 배웠습니다. 이번 포스팅에서는 인스턴스화를 막기 위한 구체적인 방법론을 제시해줍니다. 포스팅에 대한 코드는 여기에서 보실 수 있습니다. 2. 본론 Q. 인스턴스화를 막아야 하는 상황이 있을까? 초보 개발자라 잘 모르겠어. A. 구글링해보았는데, 싱글톤 패턴을 쓰는 이유와 비슷한 것 같습니다. 메모리 낭비 방지 및 객체 로딩시간이 절대적으로 중요한 경우, 인스턴스화를 막아놓는 것이 유리할 수 있습니다. 아니면 자신의 생각대로 코드가 움직이기를 바랄 때 쓰이기..

Dev/Effective Java 2021.01.12

3. 아이템[3] - private 생성자나 열거 타입으로 싱글턴임을 보증하라

1. 서론 저번 포스팅에서는 매개변수가 많다면, 빌더타입을 고려하라는 지침에 대해 배웠습니다. 점층적 생성자 타입, 자바빈즈를 거쳐 빌더타입의 탄생?을 보는 역사를 공부해보았습니다. 이번에는 private 한 생성자나 열거 타입을 지정해서 싱글톤임을 보증하는 법에 대해 포스팅해보려합니다. 2. 본론 Q. 싱글톤은 뭘까? 들어는 봤는데,, 자세하겐 몰라! A. 싱글톤은 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말합니다. 생존범위는 App 안 입니다. Q. 해당 클래스는 하나의 인스턴스를 만들기 위해 존재한다니.. 먼가 대단히 중요한 일을 하는 것 같아! A. 한번 객체가 생성되면 그 하나의 인스턴스로 앱 내에서 살아가야 합니다. 다른 메모리를 사용하지 않기 때문에 메모리 낭비가 없죠. 또한, 전역적..

Dev/Effective Java 2021.01.11

2. 아이템[2] - 생성자에 매개변수가 많다면 빌더를 고려하라

1. 서론 저번 시간 복습. 생성자 대신 정적 팩토리 메서드를 고려하는 방법 4가지에 대해 알아보았습니다. 캐싱, 이름, 하위클래스 리턴 가능, 매개변수에 따른 새로운 클래스 리턴 가능. 하지만 개발자가 이름을 알기 어려우므로 API 정리를 잘 해야하고, 정팩매만으로 클래스를 구성할 수 없다는 단점이 있었습니다. 2. 본론 이번 포스팅에서는 생성자에 매개변수가 많은 경우 이를 빌더를 통해 해결하는 방법에 대해 공부해보려 합니다. 책에서는 먼저 정적 팩토리와 생성자의 매개변수가 많을 때, 이를 어떻게 해결해야하는지에 대해 질문을 던지고 있습니다. 어떤 상황인지 이해하기 위해 간단히 코드를 가져와보겠습니다. 1. 점층적 생성자 패턴을 사용하기 public class NutritionFacts { privat..

Dev/Effective Java 2021.01.10

1. 아이템[1] - 생성자 대신 정적 팩터리 메서드를 고려하라

1. 서론 이팩티브 자바 스터디를 혼자 시작했습니다. 자바-봄 이라는 블로그를 보고 감명받았기 때문입니다. 단지 그 이유 하나입니다. 스터디 후기를 읽어보니 나도 참 기본이 부족하다는 회고를 했습니다. 기본기를 다져서 나쁠 것이 전혀! 없기 때문에 책은 없지만 최고의 선생님인 구글과 함께 시작해보았습니다. 스터디의 모든 내용은 코드를 통해 구현한 것만 이해된다고 가정하고 시작했습니다. 해당 내용은 여기에서 확인할 수 있습니다. 2. 본론 전통적으로 public 생성자를 사용하고 더 나아가 정적 팩터리 메서드를 제공할 수 있다. 이 말이 무엇인지도 이해를 잘 하지 못하는 것이 충격이었다. 답은 역시 구글링. 1. 클래스가 기본적으로 인스턴스를 얻기 위해서는 public 생성자를 이용해야 합니다. 2. 하지..

Dev/Effective Java 2021.01.09

31. [springboot] Spring boot 기초 회원가입 예제 v2.0

1. 서론 회원가입v1.0 포스팅을 쓴지 6개월이 지났습니다. 어느덧 개발자로서는 2년차를 향해 달려가고 있습니다. 다양한 프로젝트를 경험하고, 여기저기서 주워들은 지식을 활용해서 더 깊게 정리하고 싶은 마음이 커졌습니다. 그래서 2.0 버전을 만들게 되었습니다. 이번 포스팅 역시 스프링 시큐리티를 이용하여 권한을 부여하고, 회원가입 처리를 하는 간단 예제를 만들어 볼 것입니다. 조금 더 세련된 기술이 적용되었고, v1.0보다 더 쉽게 로직을 따라갈 수 있도록 만들었습니다. 이번 프로젝트에서는 포스팅 겸 프로젝트도 만들어보았습니다. 최신화된 예제 코드는 여기에서 참조가능합니다. +) 이번 포스팅을 작성하기 위해 저만의 작은 목표를 정해보았습니다. 목표는 아래와 같습니다. 1. @Valid 2. @inte..

Dev/SpringBoot 2020.12.31

5. [생각정리] 개발자 1년 해본 후기(20-12-10)

찬바람 불었을 때 입사한 것 같은데, 어느새 벌써 1년차를 마무리하고 2년차 개발자가 되었다. 작년 11월 4일 첫 입사 이후로 개발을 한지 약 1년이 되었다. 지난 1년을 되돌아보면 참 많은 감정이 교차하는 것 같다. 처음으로 회사 서비스를 운영해보고, 개발 동아리에 참여하여 Product를 생산했다. 회사 지원으로 JAVA 교육도 받으면서 실력을 무럭무럭 쌓는 중이다.(지금도 교육받고있다.) 1년간 개발자로 지내면서 분기마다 자신을 돌아보게 되는 것 같다. 처음에는 마냥 기록을 남긴다는 것에 의미를 두고 있었는데, 이제는 포스트 하나하나에 정성을 쏟아내어 나중에 봤을때도 의미있게 남기고 싶은 욕심이 생겼다. 그래서 그런가 이것 저것 많이 찾아보면서 학습하는 중이다. 기억보단 기록을 내가 1년간 개발자..

57. [TIL] 오늘의 배움일지 ( 20-12-08 )

1. 인텔리제이 test 버튼이 안보여서 고생했다. 차근차근 따라하니까 잘 동작했다. ildann.tistory.com/5 IntelliJ IDEA에 JUnit 추가하기 / 테스트 코드 작성 IntelliJ IDEA에서 JUnit을 추가하고 테스트 코드를 작성해보자. 아래 코드는 Java의 메서드 오버로딩 예제 코드이다. Main.java public class Main { public static void main(String arg []){ Multiplier multip.. ildann.tistory.com 2. todo 패턴 이외에 다른 것이 있다는 사실..! bistros.tistory.com/106 Intellij 에서 TODO window에 다른 패턴 추가로 보기 Jav로 개발을 할 때 뭔가..

카테고리 없음 2020.12.08

30. [springboot] WebJar를 이용해 CDN 대체하기

copycoding.tistory.com/280 [Maven] JQuery, BootStrap 추가 방법 JQuery나 BootStrap을 제작사 홈페이지에서 다운로드 받아 추가하는 방법 이외에 Maven에 dependency로 script만 추가하여 주면 프로젝트에 추가를 할 수 있습니다. 스크립트는 일반 예제에서 복사해 와도 copycoding.tistory.com cdn을 대체하기 위해 webjar를 이용해서 경로를 대체하려고 합니다.

Dev/SpringBoot 2020.11.29

29. [springboot] DevTools를 이용해 LiveReload해보자

brad903.tistory.com/entry/devtools-%EC%82%AC%EC%9A%A9%EB%B2%95 devtools 사용법 devtools 사용법 이번 글은 이 블로그의 글을 참고하여 작성되었습니다. 필요성 Spring framework에서 서버을 가동해놓고 코드를 변경해야 할 부분을 발견했다고 가정해봅시다. 이럴 경우 기존에는 코 brad903.tistory.com 이 글이 성공시켜주었기 때문에 이 글을 참조하면 좋을 것 같습니다. 1. pom.xml org.springframework.boot spring-boot-devtools runtime true 2. ctrl + alt + s 3. ctrl + shift + a > registry 클릭! 4. application.properti..

Dev/SpringBoot 2020.11.29