일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Code
- HTML
- jwt
- 인텔리제이
- 객체지향
- 김영한
- PUT과 PATCH
- MS949
- 인프런
- java
- 자바
- WIL
- 자바스프링
- 스파르타코딩클럽
- unmappable character for encoding MS949
- mysql
- JSESSIONID
- 엔터키 이벤트
- .decode('utf-8')
- java.sql.SQLException
- org.h2.jdbc.JdbcSQLSyntaxErrorException
- ServerSelectionTimeoutError
- 에러해결법
- 프로그래머스
- 알고리즘
- TIL
- 항해99
- 독서
- 스프링시큐리티
- API
- Today
- Total
목록자바스프링 (12)
고을마을 : 나의 코딩 이야기
@Autowired private DiscountPolicy discountPolicy DiscountPolicy의 하위 타입 FixDiscountPolicy, RateDiscountPolicy를 @Component를 통해서 스프링 빈으로 선언해보자. @Component public class FixDiscountPolicy implements DiscountPolicy{ @Component public class RateDiscountPolicy implements DiscountPolicy{ 그리고 실행해보면 NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.core.discount.DiscountPolicy' available: ..
@Configuration @ComponentScan public class AutoAppConfig { } 컴포넌트 스캔을 사용하려면 먼저 @ComponentScan을 설정 정보에 붙여준다. (@Configuration은 싱글톤을 유지하기 위함이라는거 저번 시간에 배웠다) @Component public class RateDiscountPolicy implements DiscountPolicy{ @Component public class MemoryMemberRepository implements MemberRepository{ @Component public class MemberServiceImpl implements MemberService{ private final MemberRepository..
public class SingletonTest { @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer(){ AppConfig appConfig = new AppConfig(); //1. 조회 : 호출할 때마다 객체를 생성 MemberService memberService1 = appConfig.memberService(); //2. 조회 : 호출할 때마다 객체를 생성 MemberService memberService2 = appConfig.memberService(); System.out.println("memberService1 = " + memberService1); System.out.println("memberService2 = " + me..
@Configuration public class AppConfig { //AppConfig를 통해서 MemberServiceImpl에 넣어줌. 결과적으로 MemberServiceImpl에서는 //private static MemberRepository memberRepository = new MemoryMemberRepository();가 아닌, //private final MemberRepository memberRepository;와 생성자를 통해서 주입이 됨. 이것은 의존관계역전원칙, 개방폐쇄원칙을 지키게 되는 것. @Bean public MemberService memberService(){ return new MemberServiceImpl(memberRepository()); } @Bean ..
좋은 객체 지향 설계의 5가지 원칙 (SOLID) 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리. 단일책임 원칙, 개방폐쇄 원칙, 리스코프 치환 원칙, 인터페이스 분리 원칙, 의존관계 역전 원칙. • SRP: 단일 책임 원칙(single responsibility principle) • 한 클래스는 하나의 책임만 가져야 한다. • 하나의 책임이라는 것은 모호하다. • 클 수 있고, 작을 수 있다. • 문맥과 상황에 따라 다르다. • 중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것 • OCP: 개방-폐쇄 원칙 (Open/closed principle) • 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. • 다형성을 ..
2022.6.26 항해 7주차. 목요일부터 실전프로젝트를 하게됐다. 우리 조는 Scatch : 슥캐치를 만들고자 한다. 캐치마인드처럼 그림그리면서 퀴즈를 맞추는 형식의 웹게임이다. 우선적으로 백엔드가 구현해야할 기능으로는, jwt를 활용한 로그인 회원가입, oAuth를 통한 로그인기능(카카오, 구글, 네이버) 소켓, stomp, sockJS를 통한 채팅구현이다. 이중에서 내가 담당하게 된 건 jwt를 활용한 로그인 회원가입, oAuth를 통한 로그인기능(카카오, 구글, 네이버)이다. 미니프로젝트, 클론코딩 주차에 로그인기능을 만들어보지 못했고, 이 기능에 대해 관심이 많았었다. jwt에 대한 기초적인 학습부터 진행했다. @Component public class TokenProvider implement..

2022년 6월 7일. 항해 27일차. 주특기 심화 주차이고 과제에 전념했던 날이었다. 솔직히 내 코드가 맞는 건지도 잘 모르겠지만 테스트를 돌려보면 통과된다! 다음은 과제의 일부이다. 음식점 정보 입력받아 등록 음식점 이름 (name) 최소주문 가격 (minOrderPrice) 허용값: 1,000원 ~ 100,000원 입력 100 원 단위로만 입력 가능 (예. 2,220원 입력 시 에러발생. 2,300원은 입력 가능) 허용값이 아니거나 100원 단위 입력이 아닌 경우 에러 발생시킴 기본 배달비 (deliveryFee) 허용값: 0원 ~ 10,000원 (예. 11,000원 입력 시 에러발생.) 500 원 단위로만 입력 가능 (예. 2,200원 입력 시 에러발생. 2,500원 입력 가능) 음식점 조회 등록..

2022년 6월 3일. 항해 24일차. 오늘부터 주특기 심화주차. 과제에 끌려다니기 보단 기초부터 차근차근히 다져나가기로 했다. 장기적으로 봤을때 그게 더 나에게 이득일테니... 나는 @Transactional이 "SQL 쿼리가 일어나야함을 스프링에게 알려주는 것"으로만 알고 있었다. public Users updateUser1() { // 테스트 회원 "user1" 생성 Users user = new Users("user1", "RM", "고기"); // 회원 "user1" 객체를 영속화 Users savedUser1 = userRepository.save(user); // 회원의 nickname 변경 savedUser1.setNickname("남준이"); // 회원의 favoriteFood 변경 sa..