Programming
-
[Spring] 로그인 세션 관리Programming/SpringBoot 2024. 5. 21. 17:22
세션Session세션은 서버에 값을 저장한다.서버는 세션을 사용해서 클라이언트의 상태를 유지할 수 있다. 세션 관리는 왜 필요할까?웹은 HTTP 프로토콜을 사용한다.HTTP는 connectionless, stateless 특징을 가지고 있다.비연결성, 서버가 클라이언트의 상태를 저장하지 않는다는 것이다.어떤 사용자가 어떤 세션을 사용하고 있는지 알 수 없기 때문에 세션 관리가 필요하다.즉, 로그인한 사용자 정보를 유지하기 위한 목적으로 세션을 사용한다. session의 동작 과정Spring Boot는 기본 서블릿 컨테이너로 Tomcat을 사용한다.Tomcat의 경우 세션 id로 JSESSIONID를 사용한다. 서버에서 세션을 만드는 시점은?클라이언트가 요청하면 서버에서 세션 아이디가 없을 때 세션을 만들..
-
[Spring] 테스트 코드Programming/SpringBoot 2024. 5. 14. 13:51
단위 테스트, 통합 테스트단위 테스트 Unit Test작은 단위의 코드에 대해 테스트를 수행하는 것개발자가 설계하고 만든 코드가 원래 의도대로 동작하는지를 개발자가 스스로 빠리 확인 받기 위해서 한다. 스프링부트에서의 단위 테스트와 통합 테스트를 구분하는 것으로 "@SpringBootTest 어노테이션 사용 유무"를 들 수 있다.@SpringBootTest 어노테이션을 사용하지 않는 것을 단위 테스트라고 하자.이는 스프링을 전혀 실행하지 않는다는 것이다. 디팬던시가 전혀 없는 상황에서 실행할 수 있는 테스트이다. 통합 테스트 Integration Test @SpringBootTest 어노테이션을 사용한다면 통합 테스트라고 하자.@SpringBootTest는 스프링을 실행시켜야 한다. 따라서 Spring..
-
[Spring] dataSource or dataSourceClassName or jdbcUrl is required.Programming/SpringBoot 2024. 5. 11. 13:56
java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required. DB연결을 하기 위해 DatabaseConfig파일을 만들고 Bean으로 만들려고 하는데 발생한 에러! 찾아본 결과 스프링 커넥션 풀의 차이에서 나타났는데SrpingBoot 2.0이전에는 tomcat-jdbc 를 사용하다, 2.0이후에는 HikariCP를 기본옵션으로 채택하고 있다. 그렇기 때문에 설정 방식에 조금 차이가 있다. 1. application.properties 파일url을 jdbc-url로 수정spring.datasource.url -> spring.datasource.jdbc-urlHikariCP의 Database URL설..
-
[Spring] bean 라이프 사이클Programming/SpringBoot 2024. 5. 9. 11:29
Bean자바 어플리케이션의 객체들은 독립적으로 동작하는 것 보다 서로 상화작용하여 동작하는 경우가 많은데 이를 "객체의 의존성"이라고 표현한다.스프링에서는 스프링 컨테이너에 객체들을 생성하면 객체끼리 의존성을 주입(Dependency Injection)하는 역할을 한다.스프링 컨테이너에 등록한 객체들을 "빈"이라고 한다. 스프링 컨테이너에 Bean을 등록하는 2가지 방법1. 컴포넌트 스캔과 자동 의존관계 설정2. 자바 코드로 직접 스프링 빈 등록 1. 컴포넌트 스캔과 자동 의존관계 설정스프링 부트에서 사용자 클래스를 스프링 빈으로 등록하는 가장 쉬운 방법클래스 선언부 위에 @Component 어노테이션을 사용하는 것이다.@Controller, @Service, @Repository 모두 @Componen..
-
[Network] Proxy, Reverse ProxyProgramming/SpringBoot 2024. 4. 3. 16:35
proxy란? "대리"라는 의미로 내부 네트워크에서 인터넷 접속을 할 때 빠른 액세스나 안전한 통신 등을 확보하기 위한 중계 서버를 "프록시 서버"라고 한다. proxy server 서버와 클라이언트 사이에 중계기로, 대리로 통신을 수행하는 것 클라이언트와 웹 서버간의 중개자 역할을 하는 서버이다. 프록시 서버는 크게 포워드 프록시, 리버스 프록시로 나뉜다. - 포워드 프록시는 클라이언트 - 리버스 프록시는 서버쪽의 설정을 한다. Forward Proxy 우리가 흔히 말하는 '프록시 서버'란 포워드 프록시 서버를 의미한다. 프록시 서버는 클라이언트 앞에 놓여 있다. 클라이언트가 웹 서버에 요청을 보내면 중간에서 그 요청을 프록시 서버가 가로챈다. 프록시 서버는 해당 요청을 웹 서버에게 다시 보내고, 웹 ..
-
[CS] 웹 서비스 구조Programming/SpringBoot 2024. 3. 27. 18:30
정적 페이지 (Static Pages) 데이터베이스에서 정보를 가져오거나 등 별도의 서버에서의 처리가 없어도, 사용자들에게 보여줄 수 있는 페이지. 어떠한 사용자가 오던간에 동일한 페이지를 보여준다. Ex) image, html, css, javascript 파일과 같이 컴퓨터에 저장되어 있는 파일들 동적 페이지 (Dynamic Pages) 서버의 데이터베이스에서 정보를 가져와서 처리하는 것처럼, 어떠한 요청에 의하여 서버가 일을 수행하고 해당 결과가 포함된 파일을 보여주는 페이지. 사용자들마다 다른 페이지가 보여질 수 있다. Web Server 클라이언트의 요청에 따라 정적 파일을 응답하여 제공하는 소프트웨어 nginx WAS (Web Application Server) 클라이언트의 요청에 대해 동적인..
-
-
[Java] Annotation, Reflection, Lombok, Spring BeanProgramming/Java 2024. 3. 14. 13:49
Annotation 어노테이션은 메타데이터(Metadata)라고도 불린다. ● 컴파일러에게 정보 알림 ● 컴파일할 때 설치(deployment)시의 작업을 지정 ● 실행할 때 별도의 처리가 필요 클래스, 메소드, 변수 등 모든 요소에 선언할 수 있다. 어노테이션은 상속이 안된다. 미리 만들어 놓은 어노테이션을 확장하는 것이 불가능하다. 어노테이션에 선언한 값을 확인하기 위해 Reflection을 사용한다. 리플랙션으로 클래스에 부여한 어노테이션 값을 취득할 수 있다. 기본 제공 3가지 JDK6까지는 미리 정해져 있는 어노테이션은 3개이다. 1. @Override 해당 메소드가 부모 클래스에 있는 메소드를 Override했다는 것을 명시적으로 선언. 제대로 Override했는지 확인하는 수단으로도 사용할 ..