본문 바로가기

728x90
반응형

Spring

(42)
Spring boot netty access log 남기는 방법 Spring boot에서 netty를 사용할 경우 access log가 남지 않는다. 톰캣을 사용하는 경우 access log를 남길 수 있지만 netty는 설정을 해줘야 access log를 남길 수 있다. 자바 프로퍼티 설정에 추가 -Dreactor.netty.http.server.accessLogEnabled=true 주의할 점은 Spring property가 아니라 Java System Property에 추가를 해야 한다. Logback 설정 access_log.log %msg%n AccessLog 클래스에서 accesslog를 남기기 때문에 해당클래스를 loback설정을 통해 출력해주면 된다. netty AccessLog Customizing accesslog를 보기 편하게 커스터마이징할 수 있..
Spring Actuator 란 무엇일까 Actuator 명사로 동작시키는 것을 의미. 무언가를 움직이거나 제어하는 기계 장치 스프링 액추에이터는 HTTP 엔드포인트나 JMX로 실행주인 앱의 모니터링과 관리기능을 제공한다. 의존성을 추가하면 쉽게 사용이 가능하다 // maven org.springframework.boot spring-boot-starter-actuator // gradle implementation 'org.springframework.boot:spring-boot-starter-actuator' 서버 실행 후에 actuator 엔드포인트로 호출하면 볼 수 있다. http://localhost:8080/actuator HTTP/1.1 200 Content-Type: application/vnd.spring-boot.actuat..
스프링부트 구동할 때 초기화 코드 넣는 방법(CommandLineRunner, ApplicationRunner) 스프링부트에서는 시작 시점에 특정코드를 실행하기 위해 CommandLineRunner와 ApplicationRunner를 제공한다. 두 개의 Runner인터페이스 중에 하나를 이용해 run메서드를 오버라이드해서 빈으로 등록하면 사용이 가능하다. CommandLinerRunner functional interface로 람다식으로도 사용이 가능하다. 빈으로 등록해야 사용이 가능하다. 여러개의 CommandLineRunner를 빈으로 등록할 수 있으며 @Order를 통해 순서를 지정할 수 있다. argument는 배열로 전달된다. 스프링부트가 구동되면서 컴포넌트 스캔을 통해 빈을 등록하고 run()메소드를 실행한다. 사용방법 @SpringBootApplication public class DemoApplica..
Spring WebFlux 란 무엇일까 Spring WebFlux Spring Web MVC는 Spring Framework에 속해있는 오리지널 프레임워크로 Servlet API와 Servlet Containers를 위해 만들어졌다. Spring WebFlux는 Spring5에서 새롭게 추가된 모듈로 Reactive Stream, 백프레셔, 논블록킹 등을 지원하며 Netty, Undertow, 서블릿컨테이너에서 동작한다. 등장배경 적은 수의 쓰레드로 동시성을 처리하고, 적은 리소스로 확장할 수 있는 논블록킹 웹스택이 필요했다. 기존 Spring MVC에서 Servlet동작방식을 보면 Client에서 요청하면 서블릿 컨테이너가 받아서 서블릿으로 넘겨주게 된다. 서블릿컨테이너는 소켓도 관리하는데 서블릿에 요청을 전달할 때 Poller라는 개념을 ..
Spring @RequestMapping multi request 요청받기 @RequestMapping 패턴은 컨트롤러에서 메서드에 url을 매핑하는데 사용할 수 있다. 단일 컨트롤러 메서드에 대해 여러 URL패턴을 지정해서 받을 수 있다. @Controller @RequestMapping({"/users", "/members"}) public class UserController { @RequestMapping(value="/info", method=RequestMethod.GET) public String getUserInfo() { // code to get user info return "user-info"; } } 위에서 보면 URL이 두개가 매핑되어있다. "/users", "/members" 두 가지를 매핑할 때 배열 형태로 지정하면 된다. @Controller @R..
Spring boot multiple database 설정 (mybatis+hikari) application.properties spring.db1.datasource.hikari.driver-class-name=org.mariadb.jdbc.Driver spring.db1.datasource.hikari.jdbc-url=jdbc:mariadb://localhost:3306/db1?characterEncoding=UTF-8 spring.db1.datasource.hikari.username=admin spring.db1.datasource.hikari.password=P!ssw0rd spring.db1.datasource.hikari.connectionTimeout=5000 spring.db1.datasource.hikari.validationTimeout=1000 spring.db1.da..
Spring @Resouce, @Autowired, @Inject 의존 관계 주입 차이점 @Resource, @Autowired, @Inject 모두 의존 관계를 자동으로 연결해주는 기능을 가진 어노테이션이다 @Resource JSR에 실려있는 자바 기존 어노테이션 Name -> Type -> Qualifier 기준으로 찾음 사용 위치 : 멤버변수, setter메서드 Name으로 DI가 가능하고 프레임워크 종속적이지 않기 때문에 추천 싱글턴 @Autowired Spring에서 지원하는 어노테이션 Type -> Name -> Qualifier 사용 위치 : 멤버 변수 , Setter메서드, 생성자, 일반 메서드 타입으로 연결하기 때문에 같은 타입 여러개의 필드는 오류가 남 강제 연결시 @Qualifier사용 @Inject JAVA에서 지원하는 어노테이션, 프레임워크 종속적이지 않음 Type -..
HttpSession 사용 방법 사용 이유 HttpSession은 둘 이상의 Page Request에서 사용자 식별 혹은 사용자 정보를 저장하기 위한 방법을 제공함. Spring Web MVC에서 HttpSession을 주입할 때 내부적으로 Servlet Container 에게 Session을 요청함. @GetMapping("/setSession") public String setSession(HttpServletRequest request) { HttpSession httpSession = request.getSession(true); httpSession.setAttribute("name", "hi"); httpSession.setAttribute("introduce", "myname is.."); return "setSession"; } @..

728x90
반응형