일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- inflearn
- Python
- 스프링 부트와 JPA
- 자바의정석
- 자바의정석 연습문제
- 분석함수
- 스프링 핵심원리
- 김영한
- Numpy
- 계층 쿼리
- docker
- 스프링입문
- 자바공부
- 인프런
- Java의정석
- 스프링MVC
- 불친절한 SQL 프로그래밍
- 이것이자바다
- 제네릭
- Spring
- java
- 시큐어코딩
- 불친절한SQL프로그래밍
- REGEXP_SUBSTR
- JPA
- 서블릿
- 자바연습문제
- Secure Coding
- DispatcherServlet
- 스프링
- Today
- Total
목록스프링입문 (9)
Continuous Challenge
1. AOP가 필요한 상황 모든 메소드의 호출 시간을 측정하고 싶다면? 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) 회원 가입 시간, 회원 조회 시간을 측정하고 싶다면? 문제 회원가입, 회원 조회에 시간을 측정하는 기능은 핵심 관심 사항이 아니다. 시간을 측정하는 로직은 공통 관심 사항이다. 시간을 측정하는 로직과 핵심 비즈니스의 로직이 섞여서 유지보수가 어렵다. 시간을 측정하는 로직을 별도의 공통 로직으로 만들기 매우 어렵다. 시간을 측정하는 로직을 변경할 때 모든 로직을 찾아가면서 변경해야 한다. 2. AOP 적용 - AOP: Aspect Oriented Programming - AOP파일에는 @Aspect 애노테이션을 사용해야 함 - @Co..
1. H2 Database 설치하기 주의! h2 데이터베이스는 꼭 다음 링크에 들어가서 1.4.200 버전 설치 최근에 나온 2.0.206 버전을 설치하면 일부 기능이 정상 동작하지 않음 https://www.h2database.com/html/download-archive.html 파일 압축 해제 후 h2/bin 폴더로 가서 h2.sh 파일 실행(파일 권한 변경 필요) 2. 순수 JDBC 개방-폐쇄 원칙(OCP, Open-Closed Principle) 확장에는 열려있고, 수정, 변경에는 닫혀있다. 스프링의 DI (Dependencies Injection)을 사용하면 기존 코드를 전혀 손대지 않고, 설정만으로 구현 클래스를 변경할 수 있다. 3. 스프링 통합 테스트 @SpringBootTest : 스프..
스프링 빈을 등록하는 방법 1. 컴포넌트 스캔과 자동 의존관계 설정 2. 자바 코드로 직접 스프링 빈 등록하기 컴포넌트 스캔 원리 - @Component 애노테이션이 있으면 스프링 빈으로 자동 등록된다. - @Controller 컨트롤러가 스프링 빈으로 자동 등록된 이유도 컴포넌트 스캔 때문이다. - @Component 를 포함하는 다음 애노테이션도 스프링 빈으로 자동 등록된다. . @Controller . @Service . @Repository 기본적으로는 main() 을 포함한 패키지 하위의 컴포넌트에 대해서만 스캔이 이루어진다. 스프링은 스프링 컨테이너에 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록한다(유일하게 하나만 등록해서 공유한다) 따라서 같은 스프링 빈이면 모두 같은 인스턴스다. (..
일반적인 웹 애플리케이션 계층 구조 컨트롤러: 웹 MVC의 컨트롤러 역할 서비스: 핵심 비즈니스 로직 구현 리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인: 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨 인텔리제이 단축키(Mac) cmd + option + Enter : Import shift + F6 : 변수 명 일괄 변경 코드 라인 선택 & cmd + option + V : 변수 생성 코드 블럭 선택 & cmd + option + M : 함수 생성 class 이름 선택 & cmd + shift + T : 테스트 클래스 생성 코드 블럭 선택 & cmd + option + / : 주석
더보기 스프링 웹 개발 기초 1. 정적 컨텐츠 - 파일을 그대로 웹 브라우저에 내려주는 것 2. MVC와 템플릿 엔진 - 가장 많이 하는 방식. - JSP, PHP : 대표적인 템플릿 엔진 - 서버에서 변형해서 뷰에 내려주는 것 3. API - json 데이터 구조 포맷으로 클라이언트에 전달 - Vue.js, React를 사용할 때에 많이 사용 - 서버끼리 전송할 때 1. 정적 컨텐츠 - 스프링 부트 정적 컨텐츠 기능 https://docs.spring.io/spring-boot/docs/current/reference/html/web.html#web.servlet.spring-mvc.static-content 1) 호출된 뷰와 관련된 컨트롤러가 있는지 확인 2) 내부(resource)에 있는 html ..
cd /build/libs java -jar {배포 파일}.jar 4. Build 실행하기 1) Build (Mac) ./gradlew build 2) jar 파일 실행 cd /build/libs java -jar hello-spring-0.0.1-SNAPSHOT.jar 3) 실행 확인
3. View 환경설정 1. main > resources > static > index.html 파일 생성 2. 작성 후 서버 Restart - 스프링 부트가 제공하는 Welcome Page 기능 . static/index.html 을 올려두면 Welcome page 기능을 제공한다. thymeleaf 템플릿 엔진 - thymeleaf 공식 사이트: https://www.thymeleaf.org/ - 스프링 공식 튜토리얼: https://spring.io/guides/gs/serving-web-content/ - 스프링부트 메뉴얼: https://docs.spring.io/spring-boot/docs/current/reference/html/web.html#web.servlet.spring-mvc.t..
2. 라이브러리 살펴보기 1) 스프링 부트 라이브러리 - spring-boot-starter-web . spring-boot-starter-tomcat: 톰캣 (웹서버) . spring-webmvc: 스프링 웹 MVC - spring-boot-starter-thymeleaf: 타임리프 템플릿 엔진(View) - spring-boot-starter(공통): 스프링 부트 + 스프링 코어 + 로깅 . spring-boot .. spring-core . spring-boot-starter-logging .. logback, slf4j - slf4j : 일종의 인터페이스. - logback : 어떤 구현체로 로그를 출력할 것인가. 성능도 빠르고 지원해주는 부분이 많아 두 가지 조합을 함께 사용하는 경우가 많아져 ..
1. 프로젝트 생성 1) 사전 준비 - Java 11 설치 - IDE 설치 - IntelliJ 사용 2) 스프링 부트 프로젝트 생성 - https://start.spring.io - Project : Gradle - Language : Java - Spring Boot : 2.6.4 (SNAPSHOP, M1, M2 - 미정식 버전) - Dependencies : Spring Web, Thymeleaf - IntelliJ > Open or Import > 프로젝트 내 build.gradle 파일 선택 > Open as Project - gradle : version, 라이브러리를 가져오는 파일 HelloSrpingApplication > Run 실행 시 위와 같은 Error Page가 뜨면 성공