20260210 [TIL]

2026. 2. 10. 18:46·IL/TIL

https://lahezy.tistory.com/105
https://suhyeonlog.tistory.com/21
환경변수처리 블로그


사이드 이펙트?

onetomany의 fetch 타입은 디폴트로 lazy기 때문에 안 쓴다
manytoone은 fetch 타입의 디폴트가 lazy가 아니라 eager기 때문에 쓴다




베이직반
RestController 제이슨 스트림 리턴 -> 백엔드를 따로 쓰기 때문에 이걸로 리턴
Controller는 모델 완성된 페이지 리턴

IoC (Inversion of Control) = 원칙 -> 객체 생성 자체를 Spring에게 맡긴다. 개발자가 new로 생성하던 객체를 대신 생명관리를 해 준다. Spring이 어떤 기준으로 생성자 역할을 대신 해 줄까? -> 어노테이션을 통해서 표시! @RestController / @Controller / @Service / @Repository / @Component -> 얘는 Spring이 관리하는 객체(Bean)로 등록해 달라고 우리가 신호를 보냄 Class 위에 붙여 줌 앞의 네 개는 Component의 특수한 형태
@Component를 통해서 객체를 생성을 하면? -> IoC Container에서 이 친구들을 관리해 줌

Container란? 객체를 담고 관리하는 공간
그냥 자바에서는 우리가 직접 객체를 만들어서 사용을 했다. 그런데 Container에 담아 두면 객체 관리를 해 준다
만약에 여기에 안 넣으면 객체 생성도 개발자가 선언을 해야하고, 객체를 없애 주는 거, 조작하는 것도 전부 개발자가 해야 되는데 그렇지 않게 만들어 준다
그래서 IoC Container란? 이걸 사용하면 Spring이 알아서 생성하고 넣어 준다

Bean? 스프링이 관리하는 객체
객체란? 클래스로 만든 구현체
클래스는 그냥 설계도인데 설계도로는 뭘 할 수가 없다. 클래스가 만든 구현체가 있어야 우리가 이 친구들을 활용할 수 있다. 
Spring이 생성을 해 주고 처음 Run 버튼을 누를 때 아예 beam으로 등록해야 될 애들이 뭐지? -> 전체를 탐색하고 bean으로 등록할 애들을 생성을 해 줌
IoC Container에 객체를 담아놓고 필요할 때 꺼내서 씀


그래서 Bean은 기본적으로 singleton이라고 하는데 모든 bean이 싱글톤인 건 아니다 
spring application이 시작될 때 생성되는 친구들



DI (Dependency Injection) = IoC를 구현하기 위해서, 필요한 객체를 Spring이 생성자를 통해서 넣어 주는 것. IoC 컨테이너에서 관리 중인 객체를 가져다 쓰게 됨 . 그래서 넣어 주는 것들 모두가 DI라고 함. dependencies도 일종의 DI 
public PostController(PostService postService, PostRepository postRepository) {
this.postService = postService 이런 애들이 일종의 DI라고 함
this.postRepository = postRepository
}
- DI의 세 가지 방식
생성자 주입 (final을 쓰고)
필드 주입 (Autowired 사용해서
세터 사용

@Autowired
private PostService postService;
얘네가 final을 쓸 수가 없다...... 편해 보이긴 하지만 나중에 값 변경 위험이 있고, spring 없이는 객체를 만들 수가 없다. set을 사용할 수 있다.


final은 불변 객체가 되는 게 맞음
한 번 만들어 놓으면 변하지 않는다. 스프링 공식 문서에서도 final.....
final은 참조값의 재할당이 안 되는 게 맞음.
객체의 내부값은 바꿀 수 있음

일반적으로 불변객체라고 하면 객체 생성 이후에 값을 변경할 수 없는 친구들
-> String 
-> INTEGER 얘는 불변 객체가 맞음
-> int는 불변객체가 아니고 primitive 타입 기본형

가변객체는 객체 생성 이후에 값을 변경할 수 있는 친구들이다
-> List



Spring이 시작될 때 
전체 코드를 스캔하고
bean으로 등록할 애들을 찾음
build.gradle에 있는 친구들과
@Component라는 어노테이션이 붙어 있는 애들을 찾음
ㄴ @Controller, @RestController, @Service, @Repository

IoC Container 안에 저 친구들이 있고, 요청이 들어오면 꺼내서 쓴다

Client에서 새 글 생성을 요청한다 

 

스탠다드반

inner join은 교집합이라서 둘 다 데이터가 유의미하게 있어야 되고
outer join은 차집합 개념이라면 보면 됨 일단 한쪽은 다 보여 달라고 해야 됨 데이터 매칭이 안 되어도 일단 한쪽은 다 보여 달라는

저작자표시 비영리 (새창열림)

'IL > TIL' 카테고리의 다른 글

20260304 [TIL] - 코드 개선  (0) 2026.03.03
20260211 [TIL] 외래키로 매핑되어 있는 부모 테이블 row 삭제  (0) 2026.02.11
[TIL] Hibernate Dialect(MySQL8Dialect) 오류 스키마 DDL 경고  (0) 2026.02.08
20260129 [TIL] - Spring 입문 시작에서  (0) 2026.01.29
20260126 [TIL] - 자료구조 및 알고리즘 INTRO  (0) 2026.01.26
'IL/TIL' 카테고리의 다른 글
  • 20260304 [TIL] - 코드 개선
  • 20260211 [TIL] 외래키로 매핑되어 있는 부모 테이블 row 삭제
  • [TIL] Hibernate Dialect(MySQL8Dialect) 오류 스키마 DDL 경고
  • 20260129 [TIL] - Spring 입문 시작에서
견지
견지
개발로 개발하는지 새발로 개발하는지 내가 개인 건지 새인 건지 사람인 건지
  • 견지
    개발새발
    견지
  • 전체
    오늘
    어제
    • 분류 전체보기 (20)
      • ... (0)
      • IL (20)
        • TIL (16)
        • WIL (4)
        • MIL (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    JavaScript
    HTML
    DB
    JSP
    oracle
    git
    java
    CSS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
견지
20260210 [TIL]
상단으로

티스토리툴바