목록Programing/Spring Boot (37)
월루를 꿈꾸는 대학생
다양한 의존 관계 주입 방법 생성자 주입 수정자 주입 (setter 주입) 필드 주입 일반 메서드 주입 생성자 주입 생성자를 통해서 의존관계를 주입받는 방법 지금까지 썼던 코드들 생성자 호출 시점에 딱 1번만 호출되는 것이 보장 한번만 세팅하고 그 후 수정 못하도록 하는 것이 가능 -> 불변 , 필수 의존 관계에서 사용 협업시 아무나 못 건들게 만들도록... final로 못 건들임 @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public Orde..
컴포넌트 스캔과 의존관계 자동 주입 시작하기 스프링빈 등록시 @Bean 이나 으로 설정정보를 등록했음 일일이 등록해야하니까 귀찮고 휴먼에러도 생김 스프링은 설정정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 기능 제공 의존 관계 자동 주입하는 @Autowired 도 있음 @Configuration @ComponentScan( // 스캔 할 때 제외할 거 넣어줌 -> AppConfig를 등록방지하기 위해 excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Configuration.class) ) // @Comoponet 애노테이션 붙은 거를 다 빈에 등록시켜줌 public class AutoA..
웹 애플리케이션과 싱글톤 스프링은 기업용 서비스 기술 목적이며 이런 경우 보통 여러 고객이 동시에 요청을한다 AppConfig는 new해서 새로 만들어서 반환하지 그래서 클라이언트가 요청할 때마다 생성해서 반환해서 주는 거임.. 무수한 인스턴스가 생성이 된다! 메모리 낭비가 심하다 호출마다 서로 다른 객체가 생성되므로 효율적이지 않음 그래서 딱 1개의 객체만 생성되고 공유하도록 설계를 해야한다 =>싱글톤 패턴 싱글톤 패턴 인스턴스 1개만 생성하고 쓰는 것 2개 이상 못 만들도록 막아야함 -> private 생성자를 통해서 외부에서 맘대로 new 키워드 못 사용하도록 막아야함!!! public class SingletonService { // 자기 자신을 private로 선언한 후에 new로 인스턴스 생성..
스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); // 해당 구문이 ApplicationContxt의 구현체 다형성 ApplicationContext = 스프링 컨테이너 / 인터페이스 -> 다형성 애노테이션 기반의 자바 설정 클래스로 만들어서 사용 AppConfig 방식이 애노테이션 기반 자바 설정 클래스로 컨테이너 만든것 일반적으로 ApplicationContext를 스프링 컨테이너라고 한다 스프링 컨테이너 생성 과정 new AnnotationConfigApplicationContext(AppConfig.class) 스프링 컨테이너를 생성할 때는 구성 정보를 ..
새로운 할인 정책 개발 새로운 요구사항으로 주문 금액에 따라 할인율을 다르게 적용! 객체지향 설계를 준수했다면 요구사항 변경에 유연하게 대체 가능 계획에 따르기 보다는 변화에 대응하기를.. 원래 있던 discountPolicy인터페이스에 구현체를 하나 더 추가함 -> RateDiscountPolicy 할인과 관련된 부분만 별도로 떼어냈으니까 테스트 하기가 쉬워진거다 class RateDiscountPolicyTest { RateDiscountPolicy discountPolicy = new RateDiscountPolicy(); @Test // 성공 테스트 @DisplayName("VIP는 10% 할인이 적용되어야 한다") void vip_o(){ //given Member member = new Mem..
비즈니스 요구사항과 설계 회원 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있 다.) 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하지 않을 수 도 있다. (미확정) 회원데이터 및 할인 정책은 아직 결정되지 않았기 때문에 무기한 대기일 수도 있다 그래서 인터페이스를 만들고 구현체를 언제든지 갈아..

스프링 핵심 가치 - 객체지향 옛날 옛적에 ejb가 있었음 표준 기술 느낌 정말 어렵고 복잡하고 느림 .. 즉 쓰기가 어렵다 2002년 로드 존슨이 스프링을 만듦 --- 필수 - 스프링 프레임워크 - 스프링 부트 그 외 - 스프링 시큐리티 - 스프링 데이터 - 스프링 클라우드 등등 ===== 좋은 객체 지향이란?? 객체지향 특징 추상화 캡슐화 상속 다형성 유연하고 변경이 용이하다라 -> 다형성!!! 다형성!! 가장 중요하당 세상을 역할과 구현으로 구분 역할이 인터페이스 구현이 인터페이스 구현한 객체 역할은 여러가지 구현체로 구현이 가능 자동차 개념 이걸 구현한게 여러 테슬라 기아 아반떼 운전자는 아반떼에서 테슬라로 바껴도 운전가능하다 자동차가 바껴도 운전자에게 영향이 없다 즉 유연하고 변경이 용이 인터페..
rest controller 쓰는 이유 - 아무 역할 하지 않고 바로 뷰로 넘김 - 내 일을 넘기지 않고 컨트롤러에서 로직 처리 하는 거 - json으로 값 넘기기 해줘도 될 듯 - 임마가 마지막 값을 넘기는게 아니라 그대로 뿌려줌 ! @GetMapping("/coffeeAjax") public String doCoffeeAjax(Model model){ return "/v1/coffeeAjax"; } name = post넘길 떄 id = 자바스크립트에서 이용 https://mvnrepository.com/artifact/org.json/json 컨트롤러 - rest controller 로 값 자체를 보낼 수도 있고 - post로 값 받아서 반환을 할 때 파라미터로 검색 때리고 json으로 값을 변환시켜..

마리아db 관련 내용 설정 application.properties # Port server.port=8085 # MariaDB spring.datasource.driver-class-name=org.mariadb.jdbc.Driver spring.datasource.url=jdbc:mariadb://localhost:3307/boot_study spring.datasource.username=boot spring.datasource.password=boot # Thymeleaf spring.thymeleaf.cache=false #spring.thymeleaf.prefix=classpath:/templates spring.thymeleaf.prefix=file:src/main/resources/temp..

맥 터미널에서 마리아 디비 생성 명령어 실행 brew install mariadb # 마리아 디비 접속 mysql -u root # 데이터베이스 리스트 확인 show databases; # 데이터베이스 생성 create database coffee; # 계정 생성 create user 'user'@'localhost' identified by 'password'; # 계정 권한 부여 grant all privileges on coffee.* to 'user'@'localhost'; GUI https://sequelpro.com/ Sequel Pro Perfect Web Development Companion Whether you are a Mac Web Developer, Programmer or Sof..