Backend/Spring
-
[SpringBoot Error] java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) 에러 해결하기Backend/Spring 2022. 8. 18. 16:48
Problem 스프링에서 데이터베이스를 사용하기 위해 datasource bean 등록하며 JDBC설정을 해주어 mysql을 연동하였다. 코드는 다음과 같다. url, username, password를 설정하고 HikariDatasource 사용하도록 하였다. @Bean public DataSource dataSource() { var dataSource = DataSourceBuilder.create() .url("jdbc:mysql://localhost/order_mgmt") .username("root") .password("0000") .type(HikariDataSource.class) .build(); dataSource.setMaximumPoolSize(1000); dataSource.se..
-
[Spring] SPA와 CORS에 대해서Backend/Spring 2022. 8. 17. 17:17
SPA (Single-Page Application) 단일 페이지 웹 어플리케이션 사용자 인터랙션에 의해 URL 변경 시 화면 전체의 로드가 없이 화면의 일부분만 동적으로 렌더링하여 데스크탑 어플리케이션과 비슷한 유저 경험을 제공한다. AJAX를 이용해서 대부분의 리소스(HTML, CSS, Script)들은 어플리케이션 로드시 한번 읽는다. JSON과 같은 데이터만 어플리케이션 실행 중에 읽어오고 관련된 화면을 변경시킨다. 전통적인 방법 JSP와 Thymeleaf와 다르게 보여지는 내용을 서버에서 처리하지 않고 브라우저에서 처리하는 것 요청을 보내면 html을 반환해서 이를 렌더링함 SPA 방법 화면에서 변경이 일어날 때 DOM을 이용해서 동적으로 브라우저에서 그리는 것 요청을 해서 처음에 HTML이 로..
-
[Spring Boot] Spring Boot에서 Thymeleaf 사용하기Backend/Spring 2022. 8. 12. 17:23
Thymeleaf란? 타임리프란 템플릿 엔진으로 흔히 뷰 템플릿이라고 부른다. Spring MVC 설계 시에 Controller가 전달하는 모델의 데이터를 이용하여 동적으로 화면을 구성할 수 있도록 View를 만들 수 있게 해준다. 타임리프는 html 태그를 기반으로 하고 여기에 th:속성을 이용하여 동적인 View를 제공한다. Dependency 추가 Maven의 경우 pom.xml에 다음을 추가하여 사용할 수 있다. org.springframework.boot spring-boot-starter-thymeleaf ViewResolver 등록 ApplcationContext에서 WebMvcConfigurer 인터페이스에 구현된 configureViewResolvers함수로 resolver를 등록한다. ..
-
[Spring Error] EmbeddedDatabase 사용 시 java.lang.RuntimeException: mysql start failed with error 해결Backend/Spring 2022. 8. 5. 15:15
Error JUnit을 사용한 스프링 부트 테스트 시에 EmbeddedDatabase를 사용해 mysql을 연결하려고 했다. @Configuration @ComponentScan( basePackages= {"org.prgrms.kdt.customer"} ) static class Config{ @Bean public DataSource dataSource() { var dataSource = DataSourceBuilder.create() .url("jdbc:mysql://localhost:2215/test-order_mgmt") .username("test") .password("0000") .type(HikariDataSource.class) .build(); return dataSource; } ..
-
[Spring] Logging / Logging Framework / Log Level / Logback / Log AppenderBackend/Spring 2022. 7. 31. 13:35
Logging 이란? 시스템을 작동할 때 시스템의 작동 상태의 기록과 보존, 이용자의 습성 조사 및 시스템 동작의 분석 등을 하기 위해 작동 중의 각종 정보를 기록해두는 것 로그 시스템의 사용에 관계된 일련의 사건을 시간의 경과에 따라 기록하는 것 system.out : 불편함, 여러번 로그를 찍으면 오버헤드가 발생할 수 있어 성능저하 발생 -> 사용안함! Logging Framework java.util.logging : 거의 안씀 apache commons logging log4j : 성능상 문제 -> log4j2 탄생 logback : 제일 많이 사용 slf4j : 로깅 프레임워크들을 여러개 사용할 수 있게 해주는 인터페이스 SLF4J (Simple Logging Facade For Java) 여러..
-
[Spring] AppConfig / IoC / DIBackend/Spring 2022. 5. 9. 23:53
AppConfig 애플리케이션 전체 동작 방식을 구성하기 위해 구현 객체를 생성하고 연결하는 책임을 가지는 설정 클래스이다. 애플리케이션 실제 동작에 필요한 구현 객체를 생성하고 생성자를 통해서 객체 인스턴스 참조를 주입한다. 이는 DIP를 가능하게 하고 객체를 생성하고 연결하는 역할을 분리한다. DI(Dependency Injection) : 의존관계 주입 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴이다. 애플리케이션 실행 시점에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결되는 것이다. 클라이언트 코드를 변경하지 않고 클라이언트가 호출하는 대상의 타입 인스턴스를 변경할 수 있다. IoC(Inversion Of Control) : 제어의 역전..
-
[Spring] SOLIDBackend/Spring 2022. 5. 9. 23:41
SOLID 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리했다. SRP(single responsibility principle) : 단일 책임 원칙 OCP(Open/Closed principle) : 개방-폐쇄 원칙 LSP(Liskov substitution principle) : 리스코프 치환 원칙 ISP(Interface segregation principle) : 인터페이스 분리 원칙 DIP(Dependency inversion principle) : 의존관계 역전 원칙 SRP 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다. 변경이 있을 때 파급효과가 적으면 단일 책임 원칙을 잘 따른 것이다. OCP 개방-폐쇄 원칙 소프트웨어 요소는 확장에는 열려있으나 변경에는..
-
[Spring] 스프링/스프링컨테이너/스프링빈 이란?Backend/Spring 2022. 5. 9. 23:27
스프링 스프링 DI(Dependency Injection) 컨테이너 기술 스프링 프레임워크 스프링 부트, 스프링 프레임워크 등을 모두 포함하는 스프링 생태계 자바 언어 기반의 프레임 워크로서 객체 지향 애플리케이션을 개발할 수 있도록 도와주는 프레임워크이다. 객체 지향 프로그래밍의 추상화, 캡슐화, 상속, 다형성을 보장한다. 그 중 다형성은 제어의 역전, 의존 관계 주입을 통해 역할과 구현을 편리하게 다룰 수 있도록 지원한다. 스프링 컨테이너 자바 객체(Bean)의 생명 주기를 관리하며 생성된 자바 객체드레게 추가적인 기능을 제공한다. 제어흐름을 외부에서 관리할 수 있게 해주며 객체들 간의 의존관계를 런타임에 만들어준다. 종류에는 2가지가 있다. 1. BeanFactory 빈 등록, 생성, 조회 등 관리..