스프링부트

BackEnd/Spring

[Spring] @Configuration과 싱글톤 (with. CGLIB)

@Configuration public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public OrderService orderService() { return new OrderServiceImpl(memberRepository(), discountPolicy()); } @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } } 해당 코드는 OrderService, MemberService, MemberRepository 빈(Be..

부트캠프/우아한테크코스 6기

[DB] 트랜잭션(Transaction) 이란? (with. ACID)

트랜잭션 - 개념 이해데이터를 저장할 때 단순히 파일에 저장해도 되는데, 데이터베이스에 저장하는 이유는 무엇일까?여러가지 이유가 있지만, 가장 대표적인 이유는 바로 데이터베이스는 트랜잭션 이라는 개념을 지원하기 때문이다. 트랜잭션은 데이터베이스의 상태를 변화시키기 위한 하나의 작업 단위이며,단위 작업을 안전하게 처리하도록 보장해주는 역할을 한다. 그런데 하나의 작업을 안전하게 처리하려면 생각보다 고려해야 할 점이 많다. 예를 들어서 A의 5000원을 B에게 계좌이체한다고 생각해보자.A의 잔고를 5000원 감소하고, B의 잔고를 5000원 증가해야한다. ex) 5000원 계좌이체A의 잔고를 5000원 감소B의 잔고를 5000원 증가 계좌이체라는 거래는 이렇게 2가지 작업이 합쳐져서 하나의 작업처럼 동작해야..

BackEnd/Spring

[Spring] [SpringBoot] 스프링 Bean 등록에 대해 잘못 알고 있던 것

팀 단위로 프로젝트를 진행하면서 팀원분 덕분에 잘못된 기초 개념을 바로잡을 수 있었다. 관련된 부분은 스프링 빈 등록인데 나는 여지껏 AppConfig를 만들고 @Bean 어노테이션을 사용하여 스프링 컨테이너에 스프링 빈을 등록하고서 @Service, @Repostiroy 등의 어노테이션으로 또 스프링 빈을 등록을 하는 멍청한 실수를 하고 있었다. @Service, @Repository 등 어노테이션을 사용하면 Main Method의 @SpringBootApplication 에 포함된 @ComponentScan 어노테이션이 해당 어노테이션을 가진 클래스들을 찾아 "얘는 Service고, 얘는 Repository네~" 라고 알아서 판단하여 알맞은 빈으로 등록을 해준다. (Service와 Repository..

프로젝트

[SpringBoot] [어따세워] Amazon S3와 @RestController를 이용해 리뷰 기능 구현하기(2) - Review Upload 기능 개발

안녕하세요! 저번 시간에는 AWS 가입과 기본 세팅을 진행했습니다. [SpringBoot] [어따세워] Amazon S3와 @RestController를 이용해 리뷰 기능 구현하기(1) - AWS 가입 및 세팅 반갑습니다. 드디어 주차장에 대한 정보를 제공하는 기능을 전부 구현 완료했습니다. 이제는 세부기능인 리뷰 기능을 구현해야합니다! 기능구현은 AWS S3와 @RestController를 베이스로 사용하여 리 pgmjun.tistory.com 오늘은 S3Uploader와 Review 엔터티를 개발해 리뷰 Upload 기능을 추가해보겠습니다. 바로 시작하도록 하겠습니다. DB Review Table 생성 우선 DB에 리뷰를 저장할 테이블을 생성해주었다. Review Table create table R..

스터디

[SpringBoot] @RequestBody란?

안녕하세요! 오늘은 Json형태를 자바 객체로 변환시켜주는 @RequestBody 에 대해 알아보겠습니다. UserController.java @RestController @RequestMapping("user") public class UserController { private final UserServiceImpl userService; public UserController(UserServiceImpl userService) { this.userService = userService; } @PostMapping("register") public void register(@RequestBody User user){ System.out.println(user.toString()); userServic..

프로젝트

[SpringBoot] [어따세워] 전화번호로 주차장 찾기 기능 추가!

오늘은 개발 중 필요에 의해 추가한 기능에 대해 포스팅하려고 한다. 팀원과 회의 중 주차장 전화번호로 주차장을 찾아 정보를 리턴해주는 기능도 추가했으면 좋겠다는 의견이 나왔다. 이미 구현했던 코드를 이용하면 쉽게 만들 수 있는 기능이라 판단되어 기능 추가를 하기로 했다. 간단한 과정이지만 그 과정을 남겨두려고 한다. DB 데이터 변경 우선 DB에는 전화번호가 "032-000-0000" 형태로 저장되어있다. 하지만 사용자로부터 입력받는 전화번호 정보는 "0320000000" 으로 '-' 가 없어 DB에서 찾기가 힘들다. 나는 이 문제를 자바의 replace() 함수를 사용하여 해결할 생각이다. 전화번호가 저장되는 부분에 replace("-","") 를 붙여주었다. 이렇게 되면 전화번호 컬럼 내부의 '-' ..

카테고리 없음

[SpringBoot] [어따세워] BufferedReader로 CSV파일 파싱하기!(2)

지난 시간에는 가벼운 정보만 담겨있는 샘플 CSV파일을 파싱해보는 과정을 포스팅했다. (지난 게시글 보러가기) [SpringBoot] [어따세워] BufferedReader로 CSV파일 파싱하기!(1) 지난 시간엔 'Servlet Controller' 'JPA' 'MySQL' 을 이용해 회원 정보 등록 기능을 구현했다. https://pgmjun.tistory.com/8 [Spring] [어따세워] Servlet, JPA, MySQL 이용해서 회원가입 서비스 만들기!(2) 지난.. pgmjun.tistory.com 이번 포스팅은 샘플자료가 아닌 실제 사용할 데이터가 담긴 CSV을 파싱하여 DB에 저장하는 과정과, 구현하지 않았던 findByAddr(), findByLocation(), findAll() ..

프로젝트

[SpringBoot] [어따세워] Servlet, JPA, MySQL 이용해서 회원가입 서비스 만들기!(2)

지난 시간에는 'User DTO'와 'JPA를 통해 User 데이터를 DB에 저장하기 위한 Repository와 Service 클래스'를 구현해보았다. (지난 게시글 보러가기) [SpringBoot] [어따세워] Servlet, JPA, MySQL 이용해서 회원가입 서비스 만들기!(1) 이전 글에서 프로젝트 생성 과정을 보여드렸으니 이제 본격적으로 개발에 들어가겠습니다. https://pgmjun.tistory.com/6 [SpringBoot] [어따세워] [0] 프로젝트 생성 프로젝트를 시작하기 앞서 프로젝트를 pgmjun.tistory.com 이어서 오늘은, 'Repository와 Service클래스를 스프링빈으로 등록하기 위한 Config 클래스'와 'Servlet을 사용한 Controller'를 ..

PgmJUN
'스프링부트' 태그의 글 목록