본문 바로가기

Java7

자바 애플리케이션 모니터링, javaagent, bytecode instrumentation 자바 애플리케이션 모니터링 JavaAgent, Bytecode Instrumentation 애플리케이션 운영시 모니터링이 필요하다. 애플리케이션 모니터링 서비스로 Datadog, Newrelic, Pinpoint 등이 있다. 위와 같은 자바에 모니터링 서비스를 연동할 때는 주로 자바의 javaagent 를 사용한다. javaagent 는 무엇인지 알아보자. JavaAgent JVM 에서 동작하는 자바 애플리케이션. JVM 의 다양한 이벤트를 전달받거나 정보 조회, 바이트코드 제어 등을 API 를 통하여 수행할 수 있다. -javaagent:[=] JVM 의 실행 가능한 최초 진입점인 main 메소드를 가로챌 수 있다. 실행시간에 동적으로 bytecode 를 조작할 수 있다. JVM 과 동일한 Class .. 2023. 3. 20.
공변, 반공변이란 무엇일까 공변, 반공변이란 무엇일까 변성(Variance) 자바 제네릭은 기본적으로 불변 String 은 Object 의 서브타입이다. 하지만, List 은 List 의 서브타입이 아니다. 즉 자바의 제네릭 타입은 불변(invariant) 이다. 변성(variance)이 없다. 불변임으로 인해서 나타나는 아래 문제점을 보자. 뭔가 이상한 addAll 코드 class Collection { void addAll(Collection items) { for (E e: src) { push(e); } } } void copyAll(Collection to, Collection from) { to.addAll(from); // compile error } copyAll메소드는 컴파일에러가 발생한다. 사실 copyAll 메.. 2022. 10. 27.
Spring IoC - 빈 등록 방법 5가지 스프링 2003년 등장해서, java EE 와 호환관계이다. 서블릿 기반 애플리케이션을 만들 때 사용한다. 스프링 5부터는 WebFlux 지원으로 서블릿 기반 아닌 애플리케이션도 만들 수 있게 되었다. 디자인 철학 모든 선택은 개발자의 몫이다. 다양한 관점을 지향한다. 하위 호환성을 지킨다. API를 신중히 설계한다. 높은 수준의 코드를 지향한다. 컨테이너와 빈 IoC(Inversion of Control, 제어의 역전)은 의존성주입 (Dependency Injection)이라고도 하며 의존성있는 객체를 직접 만드는 것이 아닌, 주입 받아 사용하는 방법이다. BeanFactory 는 스프링 IoC 컨테이너의 가장 최상위 인터페이스이다. 빈이란? 빈(bean)은 스프링 IoC 컨테이너가 관리하는 객체이다... 2021. 1. 10.
[Spring] Spring JDBC 설명/실습 본 게시글은 edwith boostcourse를 공부하고 정리한 내용입니다. 1. Spring JDBC JDBC를 이용해서 프로그래밍을 하게 되면 반복적인 코드가 많이 발생하고, 이는 개발자의 생산성을 떨어뜨립니다. 이를 위해 Spring JDBC가 등장했습니다. JdbcTemplate RowMapper Spring JDBC에서 개발자가 할 일 동작 스프링 어플리케이션 개발자 연결 파라미터 정의 O 연결 오픈 O SQL문 지정 O 파라미터 선언, 파라미터 값 제공 O statement 준비와 실행 O 결과를 반복하는 루프 설정 O 각 iteration에 대한 작업 수행 O 모든 예외 처리 O 트랜잭션 제어 O 연결, statement, resultset 닫기 O Spring JDBC 패키지 org.spr.. 2020. 1. 4.
[Spring] Java Spring 기본 Spring Core 1. Spring 1) Spring Framework 엔터프라이즈급(좀 큰) app을 구축할 수 있는 가벼운 솔루션, 원스탑숍(One-Stop-Shop) 모듈화가 잘 되어 있습니다. IoC 컨테이너 입니다. 트랜잭션을 선언적으로 관리할 수 있습니다. 완전한 기능을 갖춘 MVC framework를 제공합니다. AOP를 지원합니다. 스프링은 도메인 논리코드와 쉽게 분리될 수 있는 구조로 되어 있습니다. One-Stop-Shop : 모든 과정을 한꺼번에 해결하는 상점. 2) 프레임워크 모듈 Spring 프레임워크는 약 20개의 모듈로 구성되어 있습니다. 필요한 모듈만 가져다 사용 가능합니다. 3) AOP와 Instrumentation spring-AOP : AOP alliance와 호환되.. 2020. 1. 4.
[Boostcourse] DB 연결 웹 - 5. Scope Scope - BE 1. Scope란 Servlet, JSP 개발 시 변수를 많이 다룹니다. 변수의 사용범위를 다루는 스코프(scope)를 알아봅니다. 1) → 4) 순으로 큰 영역, 예를 들어 1)은 2,3,4를 포함 1) Application scope : 웹 어플리케이션이 시작되고 종료될 때까지 변수가 유지되는 경우 2) Session scope : 웹 브라우저 별로 변수가 관리되는 경우 사용, 여러 개의 요청이 들어와도 유지 3) Request scope : client가 http 요청(request)한 후 WAS가 받아서 웹 브라우저에게 응답(response)할 때까지 변수가 유지되는 경우 4) Page scope : 페이지 내에서 지역변수처럼 사용 (각 servlet, jsp 파일) 2. Pa.. 2019. 11. 20.
[Boostcourse] DB 연결 웹 - 4. Redirect & Forward Redirect, Forward - BE 1. Redirect 게시판 글 작성을 예로들어봅시다. 글을 모두 작성한 후에 글 작성 버튼을 클릭하겠죠? 이 때 클라이언트가 서버에게 글을 작성해주세요 라는 요청을 보내게 됩니다. 서버는 해당 글을 저장한 후, 웹 브루어제게 글 목록으로 이동하라고 응답을 보내게 됩니다. 웹 브라우저는 서버의 요청을 받은 후, 자동으로 서버에게 글 목록을 요청하여 응답받습니다. 서버가 클라이언트에게 어떤 URL로 이동하라는 요청을 보내는 것이 redirect라고 합니다. HttpServletResponse sendRedirect() 리다이렉트(redirect) 리다이렉트는 http프로토콜로 정해진 규칙입니다. 서버는 클라이언트의 요청에 대해 특정 URL로 이동을 요청할 수 있습니.. 2019. 11. 19.
728x90