본문 바로가기

이론70

[Spring] @Configuration과 바이트코드 조작 📌 @Configuration과 바이트코드 조작 스프링 컨테이너는 싱글톤 레지스트리다. 스프링 빈이 싱글톤이 되도록 보장해주는 구조다. 그런데 스프링 안에서 자바 코드는 어떻게 관리될까. 결론부터 말하자면 스프링은 클래스의 바이트코드를 조작하는 라이브러리를 사용한다. @Configuration을 적용한 AppConfig에서 더 확실히 알 수 있다. 사실 AnnotationConfigApplicationContext에 파라미터로 넘긴 값은 스프링 빈으로 등록된다. 그래서 AppConfig도 스프링 빈이 된다. AppConfig 스플링 빈을 조회해서 클래스 정보를 출력하면 다음과 같은 결과가 나온다. bean = class com.company.shop.AppConfig$$EnhancerBySpringCGL.. 2021. 7. 26.
[Spring] BeanFactory와 ApplicationContext / 스프링 컨테이너 📌 스프링 컨테이너 ? 스프링에서 빈을 관리하고 생성하는 컨테이너. 흔히 , ApplicationContext로 알려져 있는데 이 인터페이스는 사실 BeanFactory의 상속을 받고 있다. 그렇다면 둘의 차이는 뭘까. 궁금해서 찾아봤다. BeanFactory 스프링 컨테이너의 최상위 인터페이스다. 스프링 빈을 관리하고 조회하는 역할을 담당한다. getBean()을 제공한다. 지금까지 우리가 사용했던 대부분의 기능은 BeanFactory가 제공하는 기능이다. ApplicationContext BeanFactory 기능을 모두 상속받아서 제공한다. 빈을 관리하고 검색하는 기능을 BeanFactory 가 제공해주는데, 둘의 차이는? 애플리케이션을 개발할 때는 빈은 관리하고 조회하는 기능은 물론이고, 수많은 .. 2021. 7. 25.
[Spring] 스프링 컨테이너에 등록된 빈 조회 / Bean 조회 / 출력 📌 스프링 빈 출력 모든 빈 출력하기 실행하면 스프링에 등록된 모든 빈 정보를 출력할 수 있다. ac.getBeanDefinitionNames() : 스프링에 등록된 모든 빈 이름을 조회한다. -> 28번 라인 ac.getBean(빈이름, 타입) or ac.getBean(타입) : 빈 이름으로 빈 객체(인스턴스)를 조회한다. -> 35번 라인 애플리케이션 빈 출력하기 스프링이 내부에서 사용하는 빈은 제외하고, 내가 등록한 빈만 출력해보자. 스프링이 내부에서 사용하는 빈은 getRole()로 구분할 수 있다. -> 34번 라인 ROLE_APPLICATION : 일반적으로 사용자가 정의한 빈 ROLE_INFRASTRUCTURE : 스프링이 내부에서 사용하는 빈 📌 스프링 빈 조회 - 기본적인 조회방법 ac... 2021. 7. 24.
this 📌 this 참고 : 객제 지향 언어 OOP, 객제 지향 언어의 메모리 구조와 특징 모든 인스턴스의 메소드에 숨겨진 채 존재하는 레퍼런스로, 할당된 객체를 가르킨다. 사용 이유 : 자기 자신의 클래스 내부에 있는 변수&메서드(this.), 생성자함수(this())를 재사용하기 위해 사용한다. 역할 1. 인스턴스 자신의 주소를 반환. 역할 2. this(): 생성자에서 다른 생성자를 호출함.생성자 오버로딩에서 한 생성자가 다른 생성자 호출하는 경우. 역할 3. 함수 실행시 전달되는 객체의 주소를 자동으로 받는다. 📍 this역할1. 자신의 메모리를 가리킴. 같은 생성자를 만들어도 둘의 인스턴스 주소는 다름(date & date2) public class MyDateTest { public static vo.. 2021. 7. 20.
접근제어자와 정보은닉 📌 접근제어자 access modifier 참고 : 객제 지향 언어 OOP 변수, 메서드, 생성자에 대한 접근 권한 지정. private, public, protected, 아무것도 안쓰는 경우(기본 접근 제어자: 같은 패키지 내에서만 사용). private을 사용하면 클래스 외부에서는 접근할 수 없음.private 멤버 변수가 클래스 안으로 들어오게 된 배경에는 멤버에 접근하기위해서 멤버 함수가 클래스에 들어가게 되었기 때문. 참고 : 객체지향 프로그래밍 📌 정보은닉 information hiding private키워드를 지정해 외부에서 클래스 내부의 정보에 접근하지 못하도록함. private변수를 외부에서 접근하게 하려면 public 메서드 제공함. 주로 get,set. public 메소드의 기능을 .. 2021. 7. 20.
참조자료형 reference data type 📌 참조자료형 reference data type 참고 : 객제 지향 언어 OOP, 객제 지향 언어의 메모리 구조와 특징 클래스를 자료형으로 선언함. 그때의 변수는 레퍼런스(참조) 변수 기본 자료형은 사용하는 메모리가 정해져 있지만, 참조자료형은 클래스에 따라 다름. 기본 자료형은 실제 데이터(값)을 저장하지만, 참조자료형은 할당된 객체(인스턴스)의 주소를 저장함. 기본 자료형은 논리형, 문자형, 정수형, 실수형으로 나눠지고, 8개의 자료형이 있다. 참조자료형은 4byte의 공간을 할당하며 정수형 주소만을 저장함(값은 저장하지 못함) 📍 참조자료형 직접 만들어 사용하기학생클래스 Student 에 있는 과목 이름, 과목 성적 속성을 과목 클래스Subject 로 분리하고 Subject 참조 자료형 멤버변수를.. 2021. 7. 19.