스프링부트 공부노트 (1)
[백엔드 개발자의 스프링 공부노트] 어노테이션 공부할내용
@GeneratedValue(strategy = GenerationType.AUTO) // 올바른 전략을 선택하십시오.
@GeneratedValue(strategy = GenerationType.IDENTITY) // 자동 생성 속성 추가
의 차이점은 무엇이냐?
@GeneratedValue(strategy = GenerationType.AUTO)와 @GeneratedValue(strategy = GenerationType.IDENTITY)의 차이점은 ID 값을 생성하는 전략에 있습니다. GenerationType.AUTO는 JPA 구현체에 따라 자동 생성 전략을 선택하고, GenerationType.IDENTITY는 데이터베이스의 자동 증가 열을 사용하여 ID 값을 생성합니다.
주의: PostgreSQL에서는 GenerationType.IDENTITY를 사용하여 자동 증가 열을 생성할 수 있습니다. 그러나 테이블을 삭제하고 다시 생성하더라도 시퀀스는 삭제되지 않고 유지되므로 ID 값이 이전 값의 다음 값으로 유지될 수 있습니다.
[백엔드 개발자의 스프링 공부노트] 자동 index.html 값이 생겨서 초기화하는데 해결했던 내용기록
@GeneratedValue(strategy = GenerationType.AUTO) 을
@GeneratedValue(strategy = GenerationType.IDENTITY)로 변경하고 테이블삭제하고 다시만드니까
인덱스값이 초기화되어 1로 풀렸다.
[백엔드 개발자의 스프링 공부노트] 스프링 자체 필터, 인터셉터, 톰켓 필터 등에 대한 설명
- 스프링 자체 필터 (Spring Filter) 스프링 자체 필터는 웹 어플리케이션에서 발생하는 요청과 응답을 가로채 처리할 수 있는 스프링 프레임워크의 기능입니다. 필터는 다양한 목적으로 사용되며, 예를 들어 권한 체크, 로깅, 인코딩 변환 등의 기능을 수행할 수 있습니다.
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter(urlPatterns = "/*", description = "스프링 필터 예제")
public class MySpringFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// 필터 초기화 작업
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// 요청 처리 전 작업
System.out.println("요청 처리 전 필터 작업");
chain.doFilter(request, response); // 다음 필터 혹은 서블릿으로 이동
// 응답 처리 후 작업
System.out.println("응답 처리 후 필터 작업");
}
@Override
public void destroy() {
// 필터 종료 작업
}
}
- 인터셉터 (Interceptor) 인터셉터는 스프링 MVC에서 제공하는 요청 처리 전후에 특정 작업을 할 수 있는 기능입니다. AOP(관점 지향 프로그래밍)와 유사한 역할을 가지고 있으며, 주로 로깅, 권한 체크, 세션 처리 등의 역할을 수행합니다.
import org.springframework.web.servlet.HandlerInterceptor;
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("인터셉터 - 요청 처리 전");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("인터셉터 - 요청 처리 후");
}
}
- 톰켓 필터 (Tomcat Filter) - web.xml 톰켓 필터는 웹 어플리케이션에서 발생하는 요청과 응답을 가로채 처리할 수 있는 Servlet API의 기능입니다. 스프링 자체 필터와 유사한 역할을 수행하지만, 설정 방식이 web.xml 파일을 이용하는 것이 주요 차이점입니다.
<filter>
<filter-name>MyTomcatFilter</filter-name>
<filter-class>com.example.MyTomcatFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyTomcatFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
필터 클래스 예제 코드:
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
public class MyTomcatFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// 필터 초기화 작업
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// 요청 처리 전 작업
System.out.println("톰켓 필터 - 요청 처리 전 작업");
chain.doFilter(request, response); // 다음 필터 혹은 서블릿으로 이동
// 응답 처리 후 작업
System.out.println("톰켓 필터 - 응답 처리 후 작업");
}
@Override
public void destroy() {
// 필터 종료 작업
}
}
위의 예제와 같이 스프링 필터, 인터셉터, 톰켓 필터를 작성하고 설정하면 각기 다른 목적의 처리를 구현할 수 있습니다. 필터나 인터셉터를 사용해서 요청과 응답 처리를 실시간으로 로그를 남기거나, 권한 체크 등 구현할 수 있습니다.
[백엔드 개발자의 스프링 공부노트] 자바 프로그램 -> json - > 파이썬
중간언어(Middleware)는 응용 프로그램이나 시스템 간 데이터 전송 시 사용되는 일반적인 방법입니다. XML과 JSON은 데이터 교환의 표준 형식으로 널리 사용됩니다.
XML (eXtensible Markup Language): 계층적으로 구조화된 데이터를 표현하는데 사용되는 마크업 언어입니다. 태그를 사용하여 데이터를 나타내며, 가독성이 좋고 유연성이 뛰어나지만, 상대적으로 데이터 크기가 큽니다.
JSON (JavaScript Object Notation): 경량의 데이터 교환 형식으로, 속성-값 쌍의 집합을 사용하여 데이터를 표현합니다. JSON은 직관적이고 간결한 형태로 구조화되어 있어 가독성 측면에서 좋고, 데이터 크기가 XML보다 작습니다.
여기에 JSON 예제를 드리겠습니다. JSON 객체를 생성하고, 문자열로 직렬화하고, 역직렬화하는 과정을 보여주는 Java 예제 코드입니다.
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
import java.util.Map;
public class JsonExample {
public static void main(String[] args) {
// JSON 객체 생성
Map<String, Object> jsonMap = new HashMap<>();
jsonMap.put("name", "홍길동");
jsonMap.put("age", 25);
jsonMap.put("city", "서울");
// JSON 객체를 문자열로 직렬화
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = "";
try {
jsonString = objectMapper.writeValueAsString(jsonMap);
System.out.println("직렬화: " + jsonString);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
// JSON 문자열을 객체로 역직렬화
try {
Map<String, Object> deserializedJson = objectMapper.readValue(jsonString, HashMap.class);
System.out.println("역직렬화: " + deserializedJson);
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
}
위 코드는 HashMap을 사용하여 JSON 형식의 데이터를 생성하고, Jackson 라이브러리를 통해 이를 문자열로 직렬화하고 역직렬화합니다. 출력값은 다음과 같습니다.
직렬화: {"city":"서울","name":"홍길동","age":25}
역직렬화: {city=서울, name=홍길동, age=25}
이 예제를 통해 JSON을 생성하고, 직렬화 및 역직렬화하는 과정을 이해하고 코드를 작성하는 방법을 확인할 수 있습니다. 이를 다양한 프로젝트 및 어플리케이션에 적용할 수 있습니다.
[백엔드 개발자의 스프링 공부노트] 자바 프로그램 -> json - > 파이썬
essageConverter는 스프링 프레임워크에서 서로 다른 데이터 형식간의 변환을 지원하는 컨버터입니다. 주로 HTTP 요청 및 응답 데이터에 사용됩니다. 예를 들어, JSON 형식의 데이터를 자바 객체로 변환할 때 사용됩니다. 자바 프로그램과 파이썬 프로그램 사이에서 JSON을 사용해 데이터를 주고 받는 예제를 작성합니다.
먼저 자바 프로그램의 JSON 문자열을 생성합니다 (이전 예제에서 얻음).
java
String jsonString = "{\"city\":\"서울\",\"name\":\"홍길동\",\"age\":25}";
이제 이 데이터를 저장할 파일을 생성합니다 (예: data.json).
java
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class WriteJsonToFile {
public static void main(String[] args) {
String jsonString = "{\"city\":\"서울\",\"name\":\"홍길동\",\"age\":25}";
try {
File jsonFile = new File("data.json");
FileWriter fileWriter = new FileWriter(jsonFile);
fileWriter.write(jsonString);
fileWriter.close();
System.out.println("JSON 파일 저장 완료");
} catch (IOException e) {
System.err.println("파일 저장 오류");
e.printStackTrace();
}
}
}
파이썬 프로그램에서 생성된 JSON 파일을 읽습니다.
python
import json
with open('data.json', 'r', encoding='utf-8') as file:
data = json.load(file)
print('JSON 데이터:', data)
출력 값은 다음과 같습니다.
JSON 데이터: {'city': '서울', 'name': '홍길동', 'age': 25}
이 예제를 통해 자바 프로그램에서 생성한 JSON 데이터를 파일을 통해 파이썬 프로그램과 전달하는 방법을 확인할 수 있습니다. 추가적으로 MessageConverter에 대한 설명입니다. 스프링에서 JSON으로 데이터를 주고 받을 때 오브젝트를 JSON 형식으로 변환하거나, JSON 형식의 데이터를 오브젝트로 변환하는 작업이 필요합니다. 이때 MessageConverter 인터페이스를 구현한 클래스들을 사용하여 변환이 이루어진다.
예를 들면 MappingJackson2HttpMessageConverter가 그중 하나인데, 이 컨버터는 HTTP 요청과 응답에 대한 JSON 처리를 위해 디폴트로 등록되어 있고, 사용자가 설정하지 않아도 자동으로 적용됩니다. 자바와 파이썬을 연동하기 위해 필요한 코드가 제공되었습니다. 이를 기반으로 여러 프로젝트 및 어플리케이션에 적용할 수 있습니다.
[백엔드 개발자의 스프링 공부노트] @GetMapping , @PostMapping
@GetMapping
HTTP GET 요청을 처리합니다.
주로 데이터를 검색하거나 정보를 조회하는 용도로 사용됩니다.
URL에 질의 매개변수(query parameters)를 사용하여 데이터를 전달하고 받습니다.
캐시(cache)와 브라우저 기록에 남으며, 북마크 가능합니다.
@PostMapping
HTTP POST 요청을 처리합니다.
주로 데이터를 전송하거나, 게시글 등록, 로그인 폼 등에 사용됩니다.
요청 본문(request body)에 데이터를 포함하여 전송하기 때문에 큰 데이터를 전송할 수 있습니다.
URL에 데이터가 노출되지 않아 보안에 좋습니다.
'컴퓨터공부 > Springboot' 카테고리의 다른 글
스프링부트 공부노트 (3) (0) | 2023.08.14 |
---|---|
스프링부트 공부노트 (2) (0) | 2023.08.14 |
백엔드 개발자의 스프링 공부노트 (3) (0) | 2023.08.10 |
억대 연봉 백엔드 개발자의 스프링 공부노트 (2) (0) | 2023.08.09 |
댓글