- string
- @transactional
- PYTHON
- mysql
- 1차원 배열
- spring
- springboot
- 프로그래머스
- spring mvc
- spring security 6
- AWS
- hibernate
- spring boot
- static
- SSL
- ORM
- Docker
- 자바
- DI
- join
- 데이터베이스
- 문자열
- nginx
- Django
- jpa
- java
- select
- 스프링부트
- 스프링
- sql
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
목록Java & Kotlin/Spring (60)
개발하는 자몽
Model과 @ModelAttribute에 대해서 정리가 필요한 것 같아서 글을 쓴다. Model Model은 객체다. HashMap 형태로 Controller에서 view에 필요한 데이터를 key, value로 넣어준다. key는 객체의 이름(view의 이름), value는 객체를 담는다. 넣어진 값은 view의 이름과 view를 렌더링 할 때 필요하다. Servlet의 request.setAttribute()와 비슷한 역할을 한다.(둘은 똑같지 않다. https://velog.io/@dbsrud9126/Spring-Model.addAttribute-vs-Request.setAttribute) @PostMapping("/add") public void add(@RequestParam String nam..
공부하면서 뷰 템플릿, 템플릿 엔진이 정확히 무엇인지 정리되지 않아서 글을 남긴다. 뷰 템플릿(View template)은 간단하게 HTML을 편리하게 생성하는 기능으로 일반적으로 HTML을 동적으로 생성하는 용도로 사용한다. 대표적으로 JSP와 Thymeleaf가 있으며, JSP보다는 Thymeleaf가 많이 사용된다. 모델(model) : 뷰에 출력할 데이터를 담아둔다. 뷰(view) : 모델에 담겨있는 데이터를 사용해서 화면을 그리는 일(HTML을 생성하는 부분, 렌더링)에 집중한다. 템플릿 엔진(Template Engine)은 템플릿 양식과 특정 데이터 모델에 따른 입력 자료를 합성하여 결과 문서를 출력하는 소프트웨어 또는 소프트웨어 컴포넌트를 말한다. 템플릿 엔진의 정의를 검색했을 때 이렇게 나..

프록시는 어떤 객체를 사용하려고 할 때 해당 객체에 직접 요청하는 것이 아닌 중간에 가짜 프록시 객체(대리인)를 둔다. 이 프록시 객체가 대신 요청을 받고 실제 객체를 호출한다. 프록시 모드를 설정하면 의존성 주입을 통해 주입되는 빈은 실제 빈이 아닌 해당 빈을 상속받은 프록시 객체이다. 스프링은 CGLIB 라이브러리(Byte Code Generation Library)를 사용하여 프록시 객체를 주입한다. 프록시 객체 내부에는 실제 빈을 요청하는 로직이 들어있다. 클라이언트의 요청이 들어오는 시점에 실제 빈을 호출한다. → 실제 빈의 조회를 필요 시점까지 지연 프록시 객체는 실제 객체를 상속받아서 만들어지므로 클라이언트 입장에서는 실제 빈을 사용하는 것과 동일한 방법으로 사용하면 된다. @Scope의 p..
빈을 찾기 위한 다양한 의존성 검색 방법 스프링 빈 스코프를 공부하다가 의존성 주입(DI)뿐만 아니라 의존성을 갖는 빈을 검색 (DL, Depndency Lookup)할 때도 있다는 것을 알게 되었다. 스코프가 prototype이거나 request인 경우가 대표적이다. Spring은 빈을 검색하기 위한 다양한 방법들을 제공한다. @Scope("prototype") //또는 @Scope("request") public class UserRequest { ... } 1. ApplicationContext 스프링은 DI 컨테이너인 ApplicationContext를 관리하고 있다. 그래서 ApplicationContext를 통해 필요한 빈을 검색할 수 있다. @Service @RequiredArgsConstr..
수동 빈 등록과 의존관계 주입 @Bean 애노테이션은 method-level로 수동으로 빈을 등록할 때 사용한다. 메서드가 선언된 클래스 상단에는 @Configuration 애노테이션을 붙여 설정 정보 클래스임을 알려주고, 싱글톤이 깨지지 않도록 한다. (@Configuration을 붙이지 않아도 @Bean을 붙이면 다 빈으로 동록 되지만 싱글톤이 깨진다.) /* 수동 빈 등록 및 의존관계 주입 @Configuration, @Bean */ package hello.core; ... @Configuration public class AppConfig { @Bean public MemberService memberService() { //memberService에 의존관계로 memberRepository 주..
인프런 김영한 님의 스프링 인강을 보며 코딩을 하다가 궁금한 점이 생겨서 정리해본다. public class ApplicationContextSameBeanFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(SameBeanConfig.class); ... @Configuration static class SameBeanConfig { @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } @Bean public MemberRepository memberRepository2() { return ..

이 글은 아래 강의를 기반으로 작성됩니다. [무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com AOP가 필요한 상황 AOP는 언제, 왜 쓰는지를 알면 어렵지 않다. 그렇다면 언제 쓰고 싶은 걸까? 다음과 같은 상황이 주어졌다고 하자. 모든 메소드의 호출 시간을 측정하고 싶어 공통 관심 사항(cross-cutting concern) VS. 핵심 관심 사항(core concern) 회원 가입 시간, 회원 조회 시간을 측정하고 싶어 모든 메소드의 호출 시간을 측정하고 싶어서 초 단위로 측정을 했다. ..
이 글은 아래 강의를 기반으로 작성됩니다. [무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 다음 순서로 진행한다. 스프링 통합 테스트 스프링 JdbcTemplate JPA 스프링 데이터 JPA 본래 강의 순서대로라면 "H2 데이터베이스 설치"와 "순수 JDBC"가 있어야 하는데 데이터베이스 설치를 따로 다룰 필요는 없어 보이고, 순수 JDBC는 요즘 실무에서 쓰지 않는 걸로 알고 있기 때문에 넘긴다. 스프링 통합 테스트 이전까지 했던 테스트는 전혀 스프링과 관련이 없는 순수한 Java 코드로..

이 글은 아래 강의를 기반으로 작성됩니다. [무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 다음 순서대로 진행한다. 회원 웹 기능 - 홈 화면 추가 회원 웹 기능 - 등록 회원 웹 기능 - 조회 홈 화면 추가 1. 홈 컨트롤러 추가 controller 패키지에 HomeController를 추가한다. @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } } @GetMapp..
지난 포스트에서 스프링 빈을 등록하는 방법에는 2가지가 있고, 그중에서 "컴포넌트 스캔과 자동 의존관계 설정" 방식을 다뤘다. 이번에는 "자바 코드로 직접 스프링 빈을 등록"한다. 이 글은 아래 강의를 기반으로 작성됩니다. 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 학습 페이지 지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요.... www.inflearn.com 자바 코드로 직접 스프링 빈 등록 등록 전에 이전에 MemberService와 MemoryMemberRepository에 사용한 @Service, @Repository, 생성자 위에 @Autowired를 전부 제거한다. MemberController의 @Contro..