본문 바로가기

스프링(부트)14

IntelliJ에서 SpringBoot와 jsp 연결시 발생 에러 SpringBoot가 JSP대신 Thymeleaf를 지원하기 때문에 거의 사용하진 않겠지만 간혹 JSP를 사용하는 경우도 있다. 이때 IntelliJ에서 바로 실행했을 때 JSP파일을 찾지 못해서 문제가 발생하는 경우가 있다. 일단, SpringBoot에서 JSP를 사용하는 법을 먼저 알아보면, maven 기준으로 pom.xml에 아래 두개의 dependency를 넣어준다. javax.servlet jstl org.apache.tomcat.embed tomcat-embed-jasper provided 또한 jar패키징을 사용하면 안되고, war로 패키징을 해야한다. 그리고 src/java/main 밑에 webapp이라는 디렉토리를를 추가해주고 그 밑에 WEB-INF라는 디렉토리도 넣어줘야 한다. 이제 a.. 2021. 1. 12.
Servlet과 Spring MVC Servlet과 Spring MVC 서블릿(Servlet) 자바 서블릿(Java Servlet)은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 흔히 "서블릿"이라 불린다. 서블릿을 사용하는 방법은 서블릿 애플리케이션을 만든 다음 web.xml에 servlet을 등록해주고 servlet을 원하는 url과 매핑해준다. public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { System.out.println("Do Get"); resp.getWriter().p.. 2021. 1. 7.
멀티 쓰레드 환경과 스프링 빈 멀티 쓰레드 환경과 스프링 빈 스프링 빈은 대부분 Singleton 패턴으로 생성되어 Application Context에 의해서 관리된다. 즉, 모든 Controller, Service, Repository는 하나의 인스턴스만 갖고 있는 것이다. 그런데 스프링 환경자체는 멀티 쓰레드인데 어떻게 Thread-Safe를 유지할 수 있을까 궁금해졌다. 정답부터 말하면 Thread-Safe하지 않다. 단지, Thread-Safe하도록 코드를 짤 뿐이다. 일단 구조를 Spring에서 요청이 들어오면 그 요청은 각각 하나의 쓰레드가 맡게 된다. 즉 모든 쓰레드는 스프링 빈을 공유하고 내부의 멤버변수도 공유하게 되는 것이다. 하나의 예를 보자 @RestController public class UserControl.. 2021. 1. 6.
JPA (Java Persistence API) JPA JPA (Java Persistence API)란 현재 자바의 ORM 표준 인터페이스를 말한다. JPA는 인터페이스라 기술 스펙일뿐 실제로 구현을 해야한다. 그리고 JPA를 구현한 기술이 hibernate이다. Hibernate이외에도 DataNucleus, EclipseLink같은 다른 구현체들이 존재한다. 그렇다면 JPA에서 가장 핵심인 영속성 컨텍스트(Persistence Context)에 대해서 알아보자 영속성 컨텍스트(Persistence Context) 영속성 컨텐스트란 엔티티를 영구 저장하는 환경이라는 뜻이다. 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 .. 2021. 1. 5.
SpringBoot 내장 웹서버 아래의 내용은 inflearn 강좌인 스프링 부트 개념과 활용을 보고 정리한 글입니다. Backgrounds SpringBoot는 Spring과 달리 웹서버에 대한 설정을 따로 해줄 필요가 없다. 그 이유는 바로 스프링부트에서 전에 말한 EnableAutoconfigure을 통해서 미리 내장 웹서버를 설정하기 때문이다. 이번 포스트는 SpringBoot의 내장웹서버에 대해 정리해본다. SpringBoot 내장 웹서버 spring-boot-starter-web dependency에는 자동으로 spring-boot-starter-tomcat을 포함하는데 springboot web은 자동으로 tomcat을 Servlet Container로 사용하고 있다. 이 역시 EnableAutoConfiguration에 .. 2020. 6. 4.
[스프링부트] SpringBoot AutoConfigure 아래의 내용은 inflearn 강좌인 스프링 부트 개념과 활용을 보고 정리한 글입니다. Backgrounds SpringBoot를 실행하게 되면 다양한 설정들이 뜨는 걸 볼 수 있다. 그러나 우리는 Bean으로 등록한 적이 없는데 이런 설정들이 어디서 어떻게 주입이 되는지 알아볼 필요가 있다. @SpringBootApplication main함수를 보게 되면 보통 @SpringBootApplication 이라는 어노테이션이 존재한다. 어노테이션을 타고 들어가보면 아래와 같이 다양한 어노테이션이 붙어있다. 그 중에서 우리가 살펴볼 만한 것은 아래 3개의 어노테이션이다. @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan @SpringBootC.. 2020. 6. 3.