https://sundaland.tistory.com/300[ ▶ Method ]메서드에는 호출될 수 있는 실행 가능한 코드가 들어있다. 메서드는 상속되고 넌-리플렉티브한 코드에서는 오버로딩, 오버라이딩, 하이딩 (Hiding)와 같은 동작이 컴파일러에 의해 적용된다. 반면 리플렉티브한 코드는 슈퍼클래스를 고려하지 않고도 메서드 선택을 특정 클래스로 제한할 수 있다. 슈퍼클래스 메서드에 액세스할 수 있지만 메서드를 선언한 클래스를 확인할 수 있다, 이는 리플렉션 없이는 프로그래밍 방식으로 발견하는 것이 불가능하며 많은 미묘한 버그의 원인이 된다. java.lang.reflect.Method 클래스는 메서드의 제어자, 리턴 타입, 파라미터, 어노테이션 및 throw된 예외에 대한 정보를 액세스하는 API를..
전체 글
https://sundaland.tistory.com/299 리플렉션은 java.lang.relfect.Member 인터페이스를 정의하며, 이 인터페이스는 java.lang.reflect.Field, java.lang.reflect.Method, java.lang.reflect.Constructor에 의해 구현된다. 자바 언어 사양 (Specification)에 따르면 클래스의 멤버는 필드, 메서드, 중첩 클래스, 인터페이스, 열거형 타입을 포함한 클래스 본문의 상속된 구성 요소이다. 생성자는 상속되지 않기 때문에 멤버가 아니다. 이는 java.lang.reflect.Member를 구현하는 클래스와 다르다. [ ▶ Fields ]필드는 값과 연관된 클래스, 인터페이스 또는 열거형이다. java.lang...
https://sundaland.tistory.com/269[ ▶ Uses of Reflection ]리플랙션은 JVM (자바 가상 머신)에서 실행되는 애플리케이션의 런타임 동작을 검사하거나 수정하는 기능이 필요한 프로그램에서 일반적으로 사용된다. 이는 비교적 고급 기능이므로 언어의 기본 사항을 잘 이해하고 있는 개발자만 사용해야 한다. 이러한 주의사항을 염두에 두고 리플랙션은 강력한 기술이며 응용 프로그램이 그렇지 않으면 불가능한 작업을 수행할 수 있도록 할 수 있다. 리플렉션이란 자바와 같은 프로그래밍 언어에서 프로그램이 런타임 시점에 자기 자신을 검사하고 수정할 수 있는 기능을 말한다. 리플랙션을 통해 클래스, 메서드, 필드 등의 구조적인 요소에 대한 정보를 동적으로 탐색하고 조작할 수 있다. 즉 ..
https://sundaland.tistory.com/541. 생성자 주입 (Constructor Injection)생성자를 통해 의존성을 주입하는 가장 권장되는 방식이다.@Componentpublic class MyService { private final MyRepository repository; public MyService(MyRepository repository) { this.repository = repository; }}2. 세터 주입 (Setter Injection)세터 메서드를 통해 의존성을 주입하는 방식이다.@Componentpublic class MyService { private MyRepository repository; @Autowire..
https://sundaland.tistory.com/207[ ▶ Java-based Container Configuration ][ ▷ Basic Concepts: @Bean and @Configuration ]스프링의 자바 구성 지원에서 핵심 아프택트는 @Configuration 어노테이션이 달린 클래스와 @Bean 어노테이션이 달린 메서드이다. @Bean 어노테이션은 메서드가 스프링 IoC 컨테이너에서 관리할 새 객체를 인스턴스화하고, 구성하고, 초기화한다는 것을 나타내는데 사용된다. 스프링의 XML 구성에 익숙한 사람들에게 @Bean 어노테이션은 엘리먼트와 동일한 역할을 한다. @Bean 어노테이션이 달린 메서드는 모든 스프링 @Componenet와 함께 사용할 수 있다. 그러나 @Config..
https://sundaland.tistory.com/208 Spring IoC Container 4 sundaland.tistory.comDependencies and Configuration in Detail관리되는 다른 빈(협력자)에 대한 참조나 인라인으로 정의된 값으로 빈 속솽과 생성자 아규먼트를 정의할 수 있다. Spring의 XML 기반 구성 메타데이터는 이 목적을 위해 및 엘리먼트 내에 하위 엘리먼트 타입을 지원한다.Straight Values (Primitives, Strings and so on) 엘리먼트의 value 속성은 속성이나 생성자 아규먼트를 사람이 읽을 수 있는 문자열 표현으로 지정한다. 스프링의 conversion service는 이러한 값을 String에서 속성이나 아규..
https://sundaland.tistory.com/285 Spring IoC Container 3 sundaland.tistory.com Dependencies일반적인 엔터프라이즈 애플리케이션은 단일 객체(또는 Bean)로 구성되지 않는다. 가장 단순한 애플리케이션조차도 최종 사용자가 이 애플리케이션을 일관된 애플리케이션으로 인식할 수 있도록 하기 위해 함께 작동하는 몇 가지 객체가 있다. 의존성 주입 (Dependency Injection)객체들이 그들은 의전성(그들이 함께 작업하는 다른 객체들)을 오직 생성자 아규먼트, 팩토리 메서드로의 아규먼트, 또는 객체가 생성되거나 팩토리 메서드에서 리턴된 후에 객체 인스턴스에 설정된 속성을 통해서만 정의하는 과정이다.그런 다음 컨테이너는 빈을 생성할 때 ..
https://sundaland.tistory.com/284 Spring IoC Container 2 sundaland.tistory.comInstantistion BeansBean Definition 본질적으로 하나 이상의 객체를 생성하기 위한 레시피이다. 컨테이너는 요청 시 명명된 빈의 레시피를 확인하고, 해당 빈 정의에 캡슐화된 구성 메타데이터를 사용하여 실제 객체를 생성(또는 획득)한다. 해당 빈 정의에 캡슐화된 구성 메타데이터빈을 생성하는데 필요한 모든 정보를 담고 있으며, 이 정보는 스프링에서 BeanDefinition 객체의 속성들에 저장된다. BeanDefinition 객체의 주요 속성들스프링 컨테이너가 빈을 생성하고 관리하기 위해 사용하는 메타데이터를 포함한다.빈 클래스 이름 : 빈이 어..