반응형

전체 글 28

[Java] Nested Class(중첩 클래스) - Static Nested Class, Inner Class, Anonymous Class, Local Class

다음 오라클 공식 문서와 Effective Java 서적을 참고하여 공부했습니다. https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html Nested Classes (The Java™ Tutorials > Learning the Java Language > Classes and Objects) The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer avail..

Java 2021.09.19

[Java] Builder 생성자 패턴

객체를 생성하기 위해서는 public 생성자 또는 static 팩토리 메서드를 사용할 수 있습니다. 그런데 필수 매개변수가 아닌 선택 매개변수의 개수가 많을 경우, 코드의 효율성, 안정성, 가독성을 위해 Builder 패턴을 고려하는 것이 좋습니다. 여러 생성자 패턴과 그 장단점을 알아보겠습니다. Index 1. 예제 클래스 2. Telescoping Constructor Pattern(점층적 생성자 패턴) 3. JavaBeans Pattern(자바빈즈 패턴) 4. Builder Pattern(빌더 패턴) 1. 예제 클래스 다음과 같이 2개의 필수 멤버 필드와 4개의 선택 멤버 필드를 가지는 Book 클래스가 있다고 합시다. import java.time.LocalDate; public class Boo..

Java 2021.09.10

[Java] JDBC에서 Class.forName과 클래스 로딩에 대해 알아보기

지난 포스팅에서 Java Reflection에 대해 다뤘습니다. JDBC를 사용할 때 쓰이는 Class.forName 역시 Java Reflection에서 제공하는 기능 중에 하나입니다. JDBC 를 사용하여 DB에 접근하기 위해서는 제일 먼저 드라이버 클래스를 로드해야 하는데, 그 때 Class.forName을 사용합니다. 이번 포스팅에서는 드라이버를 로드할 때 Class.forName이 어떻게 활용되는지 알아보겠습니다. 아래의 문서와 Java API를 참고하여 공부했습니다. https://www.baeldung.com/java-classloaders https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-A868D0B9-026F-4D46-B979-9..

Java 2021.09.07

[Java] Reflection

자바빈에 대해 공부하다가 자바빈은 디폴트 생성자를 가지고있어야 한다는 것을 알게 되었습니다. 그 이유는 툴이나 프레임워크에서 리플렉션을 이용하여 객체를 생성하기 때문이라고 했습니다. 저는 리플렉션이 대략적으로 클래스에 대한 정보를 알아내는 기술이라고 알고 있었기 때문에, 리플렉션을 통해 어떻게 객체를 생성하는 것인지 궁금했습니다. 그래서 리플렉션에 대해 더 자세히 공부해보기로 했습니다. 아래의 오라클 문서를 참고하여 공부하였습니다. https://www.oracle.com/technical-resources/articles/java/javareflection.html Index 1. Reflection이란? 2. 예제 코드 3. Reflection을 위한 설정 4. instanceof 연산자 기능 실행하..

Java 2021.09.05

[Java] 동일성(Identity)와 동등성(Equality), 그리고 hashCode와 equals

클래스의 객체를 비교할 때, 동일성을 비교할 것인지 동등성을 비교할 것인지를 명확하게 해야 할 때가 있습니다. 그렇다면 동일성과 동등성이란 무엇일까요? 동일성(Identity) 두 객체의 동일성을 비교했을 때 같다는 것은, 실제 객체가 같다는 것입니다. 두 객체가 가지고 있는 값이 같을 뿐만아니라 힙 메모리 상에서 같은 주소에 위치해야 합니다. 두 객체가 물리적으로 같은지를 비교하는 셈입니다. 또, 동일한 객체는 같은 해시 코드 값을 가집니다. 해시 코드 값이란 모든 객체가 가지고 있는 고유한 값으로, 보통 객체가 위치한 메모리 주소에 특정 함수를 적용한 결과값을 나타냅니다. 해시 코드 값은 Object 클래스의 멤버 메소드인 hashCode()로 얻을 수 있습니다. 모든 객체는 Object 클래스의 서..

Java 2021.08.24

[Java] Object 클래스

자바를 배울 때 모든 클래스는 Object 클래스를 상속받는 하위 클래스라고 배웠습니다. Object 클래스에 대해 더 자세히 공부해보았습니다. Index Object 클래스의 전체 코드 package import constructor getClass() hashCode() equals() clone() toString() notify(), notifyAll() wait() 1. Object 클래스의 전체 코드 Java 11의 Object 클래스의 코드를 보면 다음과 같습니다. package java.lang; import jdk.internal.HotSpotIntrinsicCandidate; public class Object { private static native void registerNativ..

Java 2021.08.08

[Java] Oracle Java API 버그 제보하기

작년에 Java 11의 java.net패키지에 있는 HttpURLConnection 클래스 내부의 코드를 읽어보다가 Java Doc에 작은 오타가 있는 것을 발견했습니다. 그래서 Oracle Java SE 커뮤니티의 Bug Report를 활용해서 오타를 제보했었는데, 그 경험을 공유하기 위해 글을 작성하였습니다. Index 버그 제보 결과 버그 제보 방법 1. 버그 제보 결과 HttpURLConnection클래스에 getResponseCode() 메소드의 Java Doc에 'If we can't a status-line then re-throw any exception' 이라는 문구가 있었습니다. 'can't'와 'a' 사이에 동사가 빠져있는 오타가 있었고, 이 자리에 'find'가 들어가면 적절할 것이..

Java 2021.08.08

[Java] JPMS와 Module

package에 대해 공부하던 중, module이라는 개념을 새롭게 접하게 되었습니다. module이 무엇인지, 언제 생겨났는지, 언제 쓰이는지에 대해 공부해보았습니다. Index JPMS(Java 9 Platform Module System) JPMS 이전 JPMS의 목표 Module Module Example Module 선언하기 Module Keywords 1. JPMS(Java 9 Platform Module System) Oracle Java 9에서 JPMS와 함께 Module이 소개되었습니다. Module은 OpenJDK의 Jigsaw 프로젝트의 결과물입니다. Jigsaw 프로젝트에 대한 자세한 내용은 아래의 링크에서 참고할 수 있습니다. Project Jigsaw Project Jigsaw ..

Java 2021.08.08

[Spring Security] 스프링 시큐리티 인증 아키텍처 컴포넌트

스프링 시큐리티에서 제공하는 기능 ⭐️⭐️⭐️ 스프링 시큐리티는 사용자를 인증하고, 권한을 부여하는 기능을 제공합니다. 또, 여러 공격에 대해 보호하는 기능을 제공합니다. 그 중에 인증과 권한은 스프링 시큐리티에서 가장 중요한 보안 개념입니다. 인증(Authentication) 인증은 '누구'인지를 검증하는 과정입니다. 사용자가 특정 자원에 접근하기 위해서는 그럴 권한이 있는 사용자라는 것을 증명해야합니다. 따라서 사용자는 사용자를 증명하기 위한 정보(credentials)를 제공하고, 인증은 바로 그 정보를 검증하는 것을 말합니다. 사용자를 인증하는 흔한 방법 중에 하나는 사용자에게 이름(username)과 비밀번호(password)를 입력받는 것입니다. 인증이 완료되면 스프링 시큐리티는 사용자가 '누..

Spring 2020.12.27
반응형