백기선(인프런 강의)
-
리플렉션 API 1부: 클래스 정보 수정 또는 실행백기선(인프런 강의)/더 자바, 코드를 조작하는 다양한 방법 2020. 6. 14. 16:14
Class 인스턴스 만들기 Class.newInstance()는 deprecated 됐으며 이제부터는 생성자를 통해서 만들어야 한다. 생성자로 인스턴스 만들기 Constructor.newInstance(params) 필드 값 접근하기/설정하기 특정 인스턴스가 가지고 있는 값을 가져오는 것이기 때문에 인스턴스가 필요하다. Field.get(object) Filed.set(object, value) Static 필드를 가져올 때는 object가 없어도 되니까 null을 넘기면 된다. 메소드 실행하기 Object Method.invoke(object, params) 예시 package kr.co.study; import java.lang.reflect.Constructor; import java.lang.re..
-
애노테이션과 리플랙션백기선(인프런 강의)/더 자바, 코드를 조작하는 다양한 방법 2020. 6. 14. 12:56
애노테이션이란? 어노테이션은 JEE5(Java Platform, Enterprise Edition 5)부터 새롭게 추가된 요소 근본적으로 주석이랑 같은 취급을 받는다. 기본적으로 클래스와 소스에서 정보가 존재하지만 바이트를 로딩하였을 때 메모리 상에는 남지 않는다. 중요 애노테이션 @Retention 해당 애노테이션을 언제까지 유지할 것인가? 소스, 클래스, 런타임 @Inherit 해당 애노테이션을 하위 클래스까지 전달할 것인가? @Target 어디에 사용할 수 있는가? @Override 선언한 메서드가 오버라이드 됨을 표시 만약 상위(부모) 클래스(또는 인터페이스)에서 해당 메서드를 찾을 수 없다면 컴파일 에러를 발생 @Deprecated 해당 메서드가 더 이상 사용되지 않음을 표시 만약 사용할 경우 ..
-
리플렉션 API 1부: 클래스 정보 조회백기선(인프런 강의)/더 자바, 코드를 조작하는 다양한 방법 2020. 6. 9. 09:00
리플렉션의 시작은 Class https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html Class에 접근하는 방법 모든 클래스를 로딩 한 다음 Class의 인스턴스가 생긴다. “타입.class”로 접근할 수 있다. 모든 인스턴스는 getClass() 메소드를 가지고 있다. “인스턴스.getClass()”로 접근할 수 있다. 클래스를 문자열로 읽어오는 방법 Class.forName(“FQCN”) 클래스패스에 해당 클래스가 없다면 ClassNotFoundException이 발생한다. Class를 통해 할 수 있는 것 필드 (목록) 가져오기 메소드 (목록) 가져오기 상위 클래스 가져오기 인터페이스 (목록) 가져오기 애노테이션 가져오기 생성자 가져오기 예시 ..
-
JMeter 소개백기선(인프런 강의)/더 자바, 애플리케이션을 테스트하는 다양한 방법 2020. 6. 7. 14:39
성능 측정 및 부하 (load) 테스트 기능을 제공하는 오픈 소스 자바 애플리케이션. 다양한 형태의 애플리케이션 테스트 지원 웹 - HTTP, HTTPS SOAP / REST 웹 서비스 FTP 데이터베이스 (JDBC 사용) Mail (SMTP, POP3, IMAP) CLI 지원 CI 또는 CD 툴과 연동할 때 편리함. UI 사용하는 것보다 메모리 등 시스템 리소스를 적게 사용. 주요 개념 Thread Group: 한 쓰레드 당 유저 한명 Sampler: 어떤 유저가 해야 하는 액션 Listener: 응답을 받았을 할 일 (리포팅, 검증, 그래프 그리기 등) Configuration: Sampler 또는 Listener가 사용할 설정 값 (쿠키, JDBC 커넥션 등) Assertion: 응답이 성공적인지 ..
-
Testcontainers, 컨테이너 정보를 스프링 테스트에서 참조하기백기선(인프런 강의)/더 자바, 애플리케이션을 테스트하는 다양한 방법 2020. 6. 7. 12:42
@ContextConfiguration 스프링이 제공하는 애노테이션으로, 스프링 테스트 컨텍스트가 사용할 설정 파일 또는 컨텍스트를 커스터마이징할 수 있는 방법을 제공한다. ApplicationContextInitializer 스프링 ApplicationContext를 프로그래밍으로 초기화 할 때 사용할 수 있는 콜백 인터페이스로, 특정 프로파일을 활성화 하거나, 프로퍼티 소스를 추가하는 등의 작업을 할 수 있다. TestPropertyValues 테스트용 프로퍼티 소스를 정의할 때 사용한다. Environment 스프링 핵심 API로, 프로퍼티와 프로파일을 담당한다. 전체 흐름 Testcontainer를 사용해서 컨테이너 생성 ApplicationContextInitializer를 구현하여 생선된 컨테..
-
Testcontainers 기능백기선(인프런 강의)/더 자바, 애플리케이션을 테스트하는 다양한 방법 2020. 6. 7. 11:22
컨테이너 만들기 New GenericContainer(String imageName) @Container static GenericContainer postgreSQLContainer = new GenericContainer("postgres") .withExposedPorts(5432) .withEnv("POSTGRES_DB", "studytest"); 네트워크 withExposedPorts(int...) DB port가 같다면 테스트 DB 및 운영서버 DB 중 랜덤하게 사용한다.(충돌하지 않는 포트 우선사용) ## 개발용 DB docker run -p 5432:5432 --name study-db -e POSTGRES_USER=study -e POSTGRES_PASSWORD=study -e POSTG..
-
Testcntainers 소개 및 설치백기선(인프런 강의)/더 자바, 애플리케이션을 테스트하는 다양한 방법 2020. 6. 5. 08:54
https://www.testcontainers.org/ Testcontainer란? 테스트에서 도커 컨테이너를 실행할 수 있는 라이브러리. 테스트 실행시 DB를 설정하거나 별도의 프로그램 또는 스크립트를 실행할 필요 없다. 보다 Production에 가까운 테스트를 만들 수 있다. 테스트가 느려진다. Testcontainer 설치 및 예시 Testcontainers JUnit5 지원 모듈 설치(기본) - Testcontainers와 Container 사용가능 org.testcontainers junit-jupiter 1.13.0 test @Testcontainers JUnit 5 확장팩으로 테스트 클래스에 @Container를 사용한 필드를 찾아서 컨테이너 라이프사이클 관련 메소드를 실행해준다. @Co..