이 영역을 누르면 첫 페이지로 이동
개발다이어리 블로그의 첫 페이지로 이동

개발다이어리

페이지 맨 위로 올라가기

개발다이어리

저만의 개발일지를 만들어가는 공간입니다.

Spring/Core

  • 개발다이어리
@Transactional 어노테이션 알아보기[1]

@Transactional 어노테이션 알아보기[1]

2023.02.18
들어가기에 앞서 스프링은 선언적 트랜잭션인 @Transactional를 통해서 트랜잭션을 사용해야 하는 많은 코드들에 청량함을 부여했다. @Transactional이 어떤방식으로 동작하는지를 알지 못해도 사용할 수 있을정도로 쉽게 사용할 수 있지만 사용할 때 주의해야 할 특징들과 주의 사항들이 몇 가지 존재한다. @Transactional 사용방법 @Transactional을 사용하는 방법은 트랜잭션을 적용하고자 하는 클래스 또는 메소드에 해당 어노테이션을 선언해주면 된다. class BasicService { @Transactional fun tx() { logInfo("call tx") val txActive = TransactionSynchronizationManager.isActualTransac..
스프링과 데이터베이스[2] - 트랜잭션 사용

스프링과 데이터베이스[2] - 트랜잭션 사용

2022.11.09
들어가기에 앞서 데이터베이스를 다루면서 트랜잭션은 절대적으로 놓쳐서는 안되는 중요한 요소이다. 개발자가 직접 트랜잭션 코드를 모두 작성해서 사용하면 반복되는 코드도 많아지고 자칫하면 실수가 발생할 수도 있다. 지금의 스프링은 트랜잭션을 아주 간단하고 편하게 사용할 수 있도록 설정되어있고 개발자는 간단하게 사용하기만 하면 되는 환경이 되었다. 여기서는 트랜잭션을 직접 사용할려면 어떻게 해야하는지와 스프링이 이러한 불편함을 어떻게 해결하고 지금은 얼마나 편해졌는지를 알아보도록 하자. 트랜잭션의 개념 트랜잭션은 어떤 로직의 수행이 모두 이루어지거나 모두 이루어지지 않도록 해주는 것이다. 특정 로직이 수행되었는데 중간에 에러가 발생해서 종료되더라도 수행된 부분까지는 데이터를 저장하는 것이 아니라 해당 로직이 실..
스프링과 데이터베이스[1] - JDBC와 커넥션 풀

스프링과 데이터베이스[1] - JDBC와 커넥션 풀

2022.11.08
들어가기에 앞서 개발자라면 데이터베이스는 절대 피해갈 수 없는 반드시 겪어야 하는 과정일 것이다. 일반적으로 개발을 할 때 애플리케이션과 데이터베이스가 어떻게 연결되고 데이터베이스와의 연결을 어떻게 관리하며 데이터베이스가 필요한 요청이 들어왔을 때 어떻게 처리되는지를 제대로 이해하고 사용하는 것이 좋을 것이다. 사실 지금은 스프링 부트를 사용하면 아주 간단한 조작만으로도 데이터베이스와의 연결이 가능하고 요청을 처리할 수 있다. 그렇기 때문에 의식적으로 어떤 방식으로 동작하는지를 이해하고 사용하는 것이 더욱 중요하다고 할 수 있다. JDBC 데이터베이스는 종류가 굉장히 다양하다. 가장 많이 사용하는 RDBS만 보더라도 MySQL, Oracle, MSSQL 등 이미 유명한 데이터베이스들이 잔뜩 있다. 문제는..
스프링 주입의 다양한 방법들

스프링 주입의 다양한 방법들

2022.06.13
개요 스프링은 스프링 컨테이너에 빈이 등록된 이후에 빈이 필요한 곳에 자동으로 주입하는 작업까지 해준다. 이 작업이 DI의 작업이고 이렇게 스프링이 모든 제어권을 가지고 가는 것을 IoC라고 하는 것이다. 스프링이 빈을 주입하는 방식은 다양하게 있다. 생성자 주입 수정자(setter) 주입 필드 주입 일반 메서드 주입 여러 방식들의 사용법과 장단점을 살펴보자. (1) 수정자(setter) 주입 setter를 직접 만들어서 주입받는 방식이다. public class MemberServiceImpl implements MemberService { private MemberRepository memberRepository; @Autowired public void setMemberRepository(Membe..
스프링 빈 등록의 다양한 방법들

스프링 빈 등록의 다양한 방법들

2022.06.09
개요 스프링은 빈을 직접 관리하며 필요 시 빈을 주입해주는 DI방식으로 동작한다. 스프링이 빈을 등록하는 방식은 어노테이션, xml등 여러가지 방법을 사용해서 할 수 있다. 하지만 지금은 대부분 어노테이션을 사용하는 추세이고 방식도 이 방식이 훨씬 편하기 때문에 어노테이션 방식으로 빈을 등록하는 방법을 알아볼 것이다. 어노테이션을 이용해서 빈을 등록할 때 여러가지 어노테이션들이 사용된다. @Bean : 메소드 레벨에서 빈으로 등록한다. @Configuration : 내부에 생성된 빈들이 싱글톤이 유지되도록 해준다. @Component : 클래스 레벨에서 빈으로 등록한다. @ComponentScan : 특정 지정한 경로 하위에 있는 @Component가 선언된 클래스들을 빈으로 등록해준다. (1) @Bea..
[3/3] Spring과 싱글톤 패턴 - @Configuration의 비밀

[3/3] Spring과 싱글톤 패턴 - @Configuration의 비밀

2022.06.07
개요 스프링은 스프링 컨테이너에 등록된 빈이 호출되면 해당 인스턴스 자체를 주는 것이 아니라 스프링에서 특별하게 만든 인스턴스를 반환한다. 이 인스턴스는 기존의 인스턴스를 상속받아 만들어졌으며 getClass를 통해 참조하고있는 클래스를 살펴보면 CGLIB라는 단어가 있는 것을 알 수 있다. 이것이 스프링이 만든 가상의 클래스라는 의미이다. new가 여러번 호출되는데 싱글톤이 유지된다? AppConfig예제를 살펴보자. @Configuration public class AppConfig { @Bean public MemberServiceImpl memberService() { System.out.println("call memberService");// 로그 return new MemberServiceI..
[2/3] Spring과 싱글톤 패턴 - 싱글톤 패턴의 주의점

[2/3] Spring과 싱글톤 패턴 - 싱글톤 패턴의 주의점

2022.06.06
개요 Spring이 제공하는 방식의 싱글톤 패턴은 많은 단점들을 없애주고 아주 효율적으로 사용할 수 있게 만들어준다. 하지만 이것을 사용함에 있어서도 주의해야 할 점이 있다. 실무에서도 한 번씩은 꼭 발생할정도로 중요하고 기억해야 할 내용이기에 잘 익혀두고 항상 주의해야 할 것이다. 싱글톤 패턴의 주의점 싱글톤 패턴은 하나의 인스턴스를 만들어서 여러 클라이언트 호출에 대응하는 방식이다. 이렇게 하면 인스턴스가 호출 때마다 생성되고 사라지는 것이 아니라 처음 생성된 하나의 인스턴스로만 대응할 수 있기 때문에 꽤나 효울적인 결과를 가져올 수 있다. 주의해야할 점은 싱글톤 패턴은 여러 클라이언트가 하나의 인스턴스를 공유해서 사용하기 때문에 인스턴스 내부에 값을 변경할 수 있는 여지를 주면 안된다는 것이다. 내..
[1/3] Spring과 싱글톤 패턴

[1/3] Spring과 싱글톤 패턴

2022.06.03
개요 싱글톤 패턴이란 클래스의 인스턴스가 1개만 생성되는 것을 보장하는 디자인 패턴이다. 그렇기에 객체 인스턴스를 2개 이상 생성할 수 없도록 막아야 한다. private생성자를 사용해서 외부에서 임의로 new키워드를 사용하지 못하도록 막는 것이다. 싱글톤 패턴의 필요성 웹 서비스에 접속한 사용자가 특정 요청을 하면 서버에서는 요청을 처리하기 위한 객체가 생성된다. 비즈니스 로직을 처리하기 위한 객체가 있다면 이 객체가 생성될 것이다. 그런데 사용자 100명이 동시에 호출한다면? 1000명이 동시에 호출한다면? 해당 객체는 100개씩, 1000개씩 동시에 생성되고 삭제될 것이며 그에 따른 GC도 계속해서 동작하게 될 것이다. 싱글톤은 필요한 객체를 미리 내부에서 생성한 후 해당 객체를 외부에서 생성할 수..
  • 최신
    • 1
  • 다음

정보

개발다이어리 블로그의 첫 페이지로 이동

개발다이어리

  • 개발다이어리의 첫 페이지로 이동

검색

메뉴

  • 홈
  • Github
  • 방명록

나의 외부 링크

카테고리

  • 분류 전체보기 (66)
    • Spring (19)
      • MVC (7)
      • Boot (3)
      • Core (8)
      • Security (1)
    • Java (1)
    • 네트워크 (7)
    • JPA (6)
    • IntelliJ (2)
    • Database (1)
      • h2 (1)
      • postgreSQL (0)
    • 토이 프로젝트 (5)
      • 여행일지작성 (5)
    • 에러모음 (7)
    • 테스트코드 (2)
    • Git (8)
    • Nginx (2)
    • AWS (1)
    • 책 리뷰 (1)
    • Kotlin (2)
    • 회고 (1)
      • 24년도 회고 (1)
    • API문서 (0)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • JPA
  • 연관관계 매핑
  • 단방향 매핑
  • 테스트코드 실행안됨
  • HTTP
  • HTTP상태코드
  • 네트워크 #TCP #IP #인터넷 통신
  • http 헤더

정보

ssung의 개발다이어리

개발다이어리

ssung

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © ssung. Designed by Fraccino.

티스토리툴바