' 인프런 강의의 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 을 듣다가 든 궁금점 ' -> " html 파일이 실행되는 루트 폴더가 다르네?" ( /resources/templates 가 공통인 줄 알았음 ) Spring Boot 에서 war 로 패키징하는 의 경우 scr/main/webapp 경로에 index.html 이 있으면 기본 루트가 된다. 내가 여기서 말하는 기본루트라는 것은 'http://localhost:8080' 과 같이 실행 한 경우에 해당 경로의 index.html 이 실행된다는 것이다. 보통 main/resources/templates 가 기본 루트가 된다고 알고 있었는데, 해당 경우는 jar 로 패키징한 경우 이고 war 파일의 경우에는 /webapp 폴더를 루트로 설정..
Tomcat 은 WAS 의 한 종류이다 * WAS ( Web Application Server ) : 정적리소스 및 동적인 애플리케이션 관리 서버 Spring Boot 는 내장형 웹 서버를 가지고 있으므로 애플리케이션을 실행할 때 별도의 구성 없이도 내장된 서버를 사용하여 애플리케이션을 실행할 수 있다. 기본적으로 Tomcat, Jetty, Undertow 와 같은 내장형 서버를 제공하며 선택해서 사용할 수 있다. Spring 은 내장형 웹 서버를 가지고 있을까 ?? Srping Framework 는 Spring MVC 를 사용하여 웹 애플리케이션을 구축할 수 있다. Spring MVC 를 사용할 때, 일반적으로 외부 웹 서버(Tomcat, Jetty 등)를 사용하지만 ...... Spring Frame..
Spring ? Spring Boot?? 간단하게 개념을 정리해 두려한다. 이번엔 확실히 기억해 두자 !! 젭알 ~~ Spring Framework = Spring -> Spring 은 Java 를 위한 프레임워크이다 ( Spring Framework 를 Spring 이라고 간략히 부른다 ) Spring Boot -> Spring 의 문제점을 해결하기 위해 개발된 프레임워크 Spring 과 Spring Boot 둘 중에 선택해서 사용하는 것? -> 🙅: 아니야!!! Spring Boot 는 Sping 을 확장하여 사용하는 것으로서 Spring 기능을 기반으로 만들어 진 것이기 때문에 Spring Boot 를 사용하게 되면 Spring 보다 더 높은 수준의 추상화와 자동화된 기능을 사용할 수 있게 된다. ..
의존성 주입하면 생각나는 것이 @Autowired 인데, 실제로 이것들의 정확한 개념은 설명할 수 없었다. @Autowired 를 사용하면 DI 를 편리하게 할 수 있다. 정도? 그럼 얘들은 언제 어디에 어떻게 사용하는거지?? 이번 정리를 통해 완벽하게 개념을 알고 있자 !! 의존성 주입(Dependency Injection) "소프트웨어 개발에서 다른 객체나 모듈로부터 필요한 의존성(객체, 서비스, 데이터 등)을 주입하는 디자인 패턴" 코드 간의 결합도를 낮추고 유지 보수성을 향상시키며 코드를 더 테스트하기 쉽게 하기 위함 먼저 DI 개념을 익히기 위해 스프링 프레임워크를 사용하지않고, 순수한 Java 코드로 의존성 주입을 해보자 아래 예시는 생성자 주입을 통한 의존성 주입이다. Car 클래스 : 자동..
@Autowired 를 사용하는 경우 기본적으로 필수적인 의존성을 가진다. ( 기본값 : required=true ) 해당 클래스를 주입할 수 있는 빈(Bean) 이 존재 하지 않으면 애플리케이션 컨텍스트 초기화 과정 중에 예외가 발생한다. @Autowired(required = false) 해당 의존성을 주입할 수 있는 빈이 없어도 예외를 발생시키지도 않고 무시됨 해당 필드 또는 메서드 인젝션 포인트는 null 값으로 남음 특정 상황에서 의존성이 없이도 애플리케이션이 잘 동작하도록 도와줌 @Autowired (requird = false) 를 사용하는 것과 @Autowired 어노테이션 자체를 사용하지 않는 것의 차이? [ 상황 ] Member 클래스는 스프링 빈으로 등록되어있지 않다. 그런 경우 @A..
상황 spring 에서 html 파일을 여는 방법은 이렇다.(다른방법이 또 있을지도... ) login.html 이 들어있는 구조를 확인하면 이렇다 templates 안에 -> account 안에 -> login.html 파일이 존재한다 그런데 호출할 때는 templates도 없고 ~ .html 파일임을 명시해주지 않았음에도 페이지가 열린다. 어떻게 이렇게 되는지 궁금한적이 없다그냥 여긴 그렇구나~ 하고 말았었음... 궁금증 해결 과정 먼저 'templates'키워드를 검색하여 관련하여 설정해 둔 파일이 있는지 찾아보았다 발견!! json 형태로 적혀있는데, spring-boot-configure.json 에 존재한다해..
2023.04.25 - [TIL] - Spring | 단위 테스트 vs 통합 테스트 Spring | 단위 테스트 vs 통합 테스트 단위 테스트 [ 정의 ] 단위 테스트는 앱의 작은 단위(일반적으로 메서드)를 사용하여 코드의 나머지 부분에서 격리하고 예상대로 작동하는지 확인한다. 스프링 컨테이너 없이 하는 순수한 테스 megak.tistory.com 이번 포스트는, 통합 테스트를 진행하던 중 발생한 오류를 해결하는 과정이다. [ 문제 상황 ] 통합테스트 구현을 위해 다음과 같이 @Transactional 어노테이션을 사용하고 싶은데, import 할 수 없는 상황이다. 왜 일까? [ 이유 ] 먼저, 해당어노테이션에 대해 알아보자 @Transactional 트렌젝션에 해당 어노테이션이 있으면, 테스트 시작전..
단위 테스트 [ 정의 ] 단위 테스트는 앱의 작은 단위(일반적으로 메서드)를 사용하여 코드의 나머지 부분에서 격리하고 예상대로 작동하는지 확인한다. 스프링 컨테이너 없이 하는 순수한 테스트라고 할 수도 있다. [ 예시 ] 회원가입을 위한 테스르를 예시로 살펴보자 class MemberServiceIntegrationTest { MemberService memberService; MemoryMemberRepository memberRepository; @BeforeEach public void beforeEach() { memberRepository = new MemoryMemberRepository(); memberService = new MemberService(memberRepository); } @..