일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 라이프 사이클
- js
- Spring
- 로그인
- VUE
- Kotlin
- 프로토타입
- vuex
- DB
- javascript
- 캐시
- Setter
- thymeleaf
- Stateless
- JPA
- Excel
- 싱글톤
- BEAN
- Singleton
- HTTP
- vue-cli
- HTTP 메서드
- di
- cache
- Java
- Vue.js
- Repository
- Security
- dependency injection
- 의존성 주입
- Today
- Total
목록Spring (20)
jhhan의 블로그
스프링으로 엑셀 다운로드 3편입니다. 이렇게까지 오래 다룰 줄은 몰랐네요. 그래도 오류가 있다면 고쳐야겠죠 지난번까지 진행을 한다면 오류가 생기는 것을 볼 수도 있습니다(?) 이런 에러가 뜨는 것을 볼 수 있습니다. (사실 에러는 아니네요. warning이군요) 그리고 지금까지 createTempFile을 사용했기 때문에... 이런 로직을 계속 진행하면 val file = File.createTempFile("testExcel_", ".xlsx") 로컬 컴퓨터 혹은 서버로 사용되는 컴퓨터에 계속해서 temp 파일이 쌓이게 됩니다.. 그걸 계속해서 지워주지 않는다면, 컴퓨터의 용량을 언젠가는 굉장히 많이 차지하게 될 것입니다. 그걸 방지해줘야 합니다. 방법은 createTempFile로 생성된 임시파일을 ..
저번 포스트까지는 스프링 빈을 조회하는 것에 대해 알아봤습니다. 이번에는 개념적인 부분에 대해서 좀 더 알아보겠습니다. ApplicationContext를 지금까지 자주 써왔는데 이것보다 더 근본적인 녀석이 있습니다. 바로 BeanFactory입니다. 상속 관계입니다. BeanFactory는 인터페이스입니다. BeanFactory를 상속하는 ApplicationContext가 있습니다. 역시 인터페이스입니다. 그리고 나중에 ApplicationContext를 구현하는 AnnotationConfigApplicationContext가 등장합니다. 이런 상속관계를 가집니다. 그럼 BeanFactory에 대해 좀 더 알아보겠습니다. 스프링 컨테이너의 최상위 인터페이스 스프링 빈 - 관리 & 조회 가능 ex) g..
저번에 적었던 스프링 코어(1) - 스프링 컨테이너 & 빈 포스트에 이어서 합니다. 이번엔 스프링 빈 조회 시 - 상속관계에 대해 알아보겠습니다. 부모타입으로 조회 → 자식타입도 함께 조회 최상위 객체인 Object로 조회 시, 모든 스프링 빈이 조회되어서 나오게 됩니다. 프로젝트 구조입니다. beanfind 패키지 밑에 ApplicationContextExtendsFindTest라는 자바 클래스를 만듭니다. @Configuration static class TestConfig { @Bean public DiscountPolicy rateDiscountPolicy() { return new RateDiscountPolicy(); } @Bean public DiscountPolicy fixDiscountP..
이번 포스트는 저번 엑셀 다운로드에서 발생할 수 있던 에러를 수정해보려고 합니다. 저번에 마지막에서 void로 리턴값을 해놨지만, Vue.js에서는 잘 받아서 진행한다고 했습니다. 이번에는 정석적으로 리턴을 해보겠습니다. 리턴할 때 ResponseEntity를 사용하고, InputStreamResource를 바디에 담아 반환하도록 설계했습니다. 아 그리고 이번에는 갑자기 Kotlin으로 진행을 했습니다... 그래도 코틀린과 자바는 굉장히 비슷하므로, 자바를 잘 아신다면 코틀린 문법을 이해하는데 큰 어려움이 없을 것 같습니다. front코드는 변경할 것이 없습니다. 그대로 갑니다. back코드를 살펴보겠습니다. @PostMapping("/excel") fun getExcelFile(@RequestBody ..
이번 포스트는 스프링 - 엑셀 다운로드를 좀 더 그럴 듯하게 변경해서 진행합니다. 저번 엑셀 다운로드는 굉장히 간단하게만 알아봤습니다. 이번에는 backend: spring frontend: vue.js 로 진행해보려 합니다. 빠른 진행을 위해 설정은 아래 링크를 참조하면 됩니다. jhhan009.tistory.com/49?category=780121 먼저 백엔드부터 진행합니다. 모델과 컨트롤러가 중요합니다. 먼저 모델인 IntAndDouble 클래스를 만들어봅니다.(클래스 이름은 맘대로 하시면 됩니다.) public class IntAndDouble { private Integer mode; private Double affinity; private Double lb; private Double ub;..
이번 포스트는 spring으로 엑셀파일을 다운받는 방법입니다. 다른 포스트들은 너무 복잡하게 나와있는 것 같아서 최대한 간단하게 해봤습니다. offbyone.tistory.com/250 참고한 블로그입니다. 먼저 간단한 스프링 프로젝트를 만듭니다. 프로젝트 설정 시 spring web과 thymeleaf를 추가해주시기 바랍니다. 저는 gradle로 진행했습니다. maven이어도 큰 문제는 없습니다. 프로젝트 구조입니다. -> 매우 간단합니다. ㅎㅎ build.gradle 파일을 먼저 설정해 봅니다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springfra..
2편에 이어서 진행합니다. 저번에 DIP를 지켜보려고 노력하다가 에러가 뜨는 것을 마지막으로 마무리 했습니다. 이번에는 그것을 한 번 고쳐보도록 하죠. 이전의 코드는 인터페이스 A 존재 A를 구현한 구현체 A'이 있다. 인터페이스 B 존재 B를 구현한 구현체 B'이 있다. 원래라면 A'과 B'은 별개이다. 그래서 서로 관여할 일이 없다. 하지만 현재 A'이 B'을 직접 선택하는 것 과 같습니다. 이전 포스트에 적은 제 글을 한 번 보겠습니다. public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository = new MemoryMemberRepository(); private final..
1편에 이어서 진행하겠습니다... 전에는 회원을 만들 수 있는 파트를 진행했습니다. 이제는 회원과 관련된 할인을 적용해보겠습니다. 일단 할인의 경우 VIP에 한해서 1000원 할인만 해보겠습니다. 프로젝트 구조입니다. 할인에 대한 도메인을 만들기 때문에 discout 라는 패키지를 추가했습니다. 그리고 인터페이스를 하나 만듭니다. public interface DiscountPolicy { /** * @return 할인 대상 금액 */ int discount(Member member, int price); } 현재는 1000원 할인만 진행하지만, 나중에 다른 방식으로 할인을 진행할 수 도 있기 때문에 인터페이스를 이렇게 만듭니다. (할인 금액만 반환하는 아주 단순한 인터페이스... ㅎ) 다음으로 인터페이..