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

개발다이어리

페이지 맨 위로 올라가기

개발다이어리

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

Spring

  • 개발다이어리
@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.18
들어가기에 앞서 프로젝트를 만들게되면 결국 언젠가는 운영으로 배포를 해야될 때가 있다. 설령 혼자서 만드는 토이 프로젝트라고 할지라도 테스트를 위해서 또는 실제로 운영해보기 위해서 서버에 배포하게 될 것이다. 그런데 로컬에서만 사용하던 설정이 운영에서 그대로 사용되면 문제가 생길 수 있다. DB접근하는 Datasource도 다를 것이고 파일을 저장한다면 저장하는 파일경로도 다를 것이다. 이것 외에도 외부에 보여지면 안되는 중요한 정보들이 있을 수도 있다. 이러한 이유들 때문에 로컬에서 사용하는 설정파일과 운영에서 사용하는 설정파일을 분리하는 작업을 해보도록 하자. 필자가 사용한 환경은 IntelliJ, gradle, SpringBoot를 사용하고있다. 스프링부트 2.4버전 이전과 이후의 작성방법이 다르다..
스프링 시큐리티 적용 후 등록하지 않은 로그인화면 대처법

스프링 시큐리티 적용 후 등록하지 않은 로그인화면 대처법

2022.06.14
로컬로 접속시 등록하지않은 로그인 페이지가 나옴 서버를 실행한 후 로컬로 접속하기 위해서 들어갔는데 계속 만든적도 없는 로그인페이지가 나오면서 아이디와 패스워드를 입력하라고한다. 무슨짓을해도 방법이 없어서 인터넷을 찾아봤을 때 대부분의 글들이 오라클서버랑 겹치는게 아니냐 라는 내용이었는데 나는 오라클을 깔지도 않았다... 포트도 직접 닫아보고 하면서 몇시간동안 하다가 발견했다. 일단 문제는 SpringSecurity를 사용하면서 기본보안 인증이 적용되어 나타나는 화면이었다. 방법은 아이디 : user 비밀번호 : 서버 실행 시 콘솔창에 나옴 이거를 입력하면 된다. 해결되었다.
스프링 주입의 다양한 방법들

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

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도 계속해서 동작하게 될 것이다. 싱글톤은 필요한 객체를 미리 내부에서 생성한 후 해당 객체를 외부에서 생성할 수..
ExceptionResolver를 이용한 API예외 처리

ExceptionResolver를 이용한 API예외 처리

2022.05.25
들어가기에 앞서 개발을 하면 할 수록 점점 중요하게 느껴지는 것이 예외처리 인 것 같다. 처음 개발을 시작할 때는 만들어서 동작하는것이 중요했지만 이제는 작게 만들더라도 문제가 생기지 않도록 만드는 것이 중요하다 라는 것을 느끼고 있다. 예외에 따른 view를 호출하는 것은 어렵지 않다. 이미 스프링에서 간단하게 사용할 수 있도록 모든 세팅이 되어있고 개발자는 간단하게 사용하기만 하면 된다. 하지만 API예외는 많이 신경을 써야한다. 단순히 에러코드나 에러종류에 따라서 veiw를 보여주는 것과는 다르게 API종류마다, 예외마다 다른 방식으로 보여줘야 하기 때문이다. view와는 다르게 json으로 반환해줘야 하는 경우도 있을 것이다. 결국 내부적으로 어떻게 할지 정하고 정한대로 만들어주면 되기때문에 각자..
스프링 MVC 밑바닥부터 만들어보기6 - 어댑터 패턴을 이용한 유용한 컨트롤러

스프링 MVC 밑바닥부터 만들어보기6 - 어댑터 패턴을 이용한 유용한 컨트롤러

2022.04.20
V4까지 만든 프로젝트로 이제는 개발자가 편리하게 사용할 수 있는 형태로 완성되었다. 그런데 만약에 개발자가 다른 버전의 컨트롤러를 사용하고 싶다면 어떻게 해야할까? 지금까지 만든 것은 프론트 컨트롤러에서 특정 버전의 컨트롤러를 지정해서 사용하고있었다. 만약 V4를 사용하다가 V3를 사용하고 싶다면 지금의 상황에서는 변경이 불가능하다. 이 불가능을 해결하기 위해서 어댑터 패턴을 도입해보고자 한다. 만약 우리가 110V짜리에 220V를 사용할려고 하면 전압이 맞지 않기 때문에 사용 할 수 없을 것이다. 이것을 해결하기 위해 어댑터를 이용해서 전압을 맞춰서 사용해주어야 한다. 이것처럼 서로 다른 2개를 연결시키기 위한 방법을 어댑터 패턴이라고 부른다. 이번에는 이 어댑터를 도입시켜서 V3와 V4중 어떤것이 ..
  • 최신
    • 1
    • 2
  • 다음

정보

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

개발다이어리

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

검색

메뉴

  • 홈
  • 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)

최근 글

인기 글

댓글

공지사항

아카이브

태그

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

정보

ssung의 개발다이어리

개발다이어리

ssung

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

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

티스토리

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

티스토리툴바