본문 바로가기

Skill Stacks132

스프링 스크래핑 스프링 스크래핑 스크래핑이란? 웹사이트 굉장히 많은 데이터를 가지고 있고, 사용자들이 보기 편하게 가공이 되어 있다 HTML 문서를 보기 편하게 만든 것이 웹사이트 웹사이트에 HTML을 통해 보여지는 정보들을 모으는 것이 웹 스크래핑이란 것이다 웹 스크래핑은 HTML 문서를 받고 문서를 파싱(Parsing, 구문 분석) 해서 필요한 데이터를 추출한다 (일반적으로 파이썬으로 많이 사용된다) Client 대신 스크래핑 서버가, 웹 서버에게 요청을 보내서 데이터를 받아오는 것이다 서버를 사용하는 유저들의 수가 많으면 서버 부하가 걸리듯이, 스크래핑 서버에서 너무 많은 요청을 보내면 서버 부하가 걸린다 즉 서버에 요청을 보낼 때에는, 웹 서버에서 부하가 걸리지 않을 정도의 요청을 보내야 한다 주의사항 사이트의 .. 2023. 9. 4.
스프링 API 문서 만들기 스프링 API 문서 만들기 작성 이유 백엔드 개발자 같은 경우 프론트 개발자에게 문서를 전달하여, 어떤 기능이 있는지 알려준다 백엔드 개발자끼리 정보를 공유할 수 있다 즉 개발자가 만든 기능을 사람들이 이해할 수 있도록 작성을 하는 것이다 .txt로 만들면, 업데이트, 수정 하는 것이 어렵다 (개발 할 때마다 수정을 해야 한다) 계속 수정을 못 하면 사용자들이 기능을 제대로 못 사용할 수도 있다 API 문서를 돕는 tool Swagger / ReDoc / GitBook 등이 있다 고르는 방식은 협업의 방식, 사람들의 취향 등 사용한 언어를 고려해서 사용할 수 있다 사용성 : 간단한가??? Swagger? HTML로 접근을 할 수 있다 API 문서를 만들면, 하나의 URL로 다른 사람에게 공유를 할 수 있.. 2023. 9. 3.
스프링 Scheduled 스프링 Scheduled 스케줄링을 하면 좋은 이유 자동화가 될 수 있다 특히 API를 통해 데이터를 가져와야 할 경우, 자동으로 데이터를 가지고 올 수 있다 사용자가 사용을 할때마다 데이터를 가지고 오면 매우 비효율적이다 (그래서 특정 시간을 둬서, 데이터를 가지고 오면 효율적으로 바꿀 수 있다) API를 스케줄링을 통해 가지고 와서 DB에 저장을 한다 그러면 사용자가 사용을 할 때마다 API를 찾는 것이 아닌, 서버 DB에서 바로 데이터를 찾을 수 있다 그만큼 API를 사용하는 데에, 비용도 줄일 수 있을 것 Batch와 Scheduler의 차이 Batch 는 사용자와 상호작용 없이 여러 개의 작업을 미리 정해진 순서에 따라 중단 없이 처리하는 것 Scheduler 는 특정한 시간에 등록한 작업을 자.. 2023. 9. 2.
스프링 Transaction 스프링 Transaction Transaction이란? 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 상태 변화라는 것은 쿼리문을 이용하여, DB를 접근하고 수정하고, 삭제하는 것이다 작업 단위는 프로젝트 별 또는 상황 별로 나눌 수 있다 트랜잭션이 실패했을 때, 롤백으로, 트랜잭션이 실행하기 이전의 상태로 돌아가는 것이다 트랜잭션이 완전히 성공을 해야, DB를 제대로 관리할 수 있을 수 있다 트랜잭션 중에, 어떤 것은 성공하고, 어떤 것을 실패했을 때, 성공한 데이터가 저장이 된다면, DB가 복잡해질 수 있다 JPA든 JDBC든 모두 쿼리문을 사용하여 DB의 상태를 변화시키는 것이다 JDBC는 쿼리문을 직접 작성하지만, JPA는 ORM을 통해 개발자가 간단하게 작성한 코드를 쿼리문으로 바꾸어.. 2023. 9. 1.
스프링 DB 스프링 DB Persistence Framework 데이터는 Persistence하다 (영속성) 어플리케이션을 사용할 때에, 사용했던 데이터가 저장되고, 없어지면 안 된다 즉, 프로그램이 꺼진다고 데이터가 없어지면 안 된다 이렇게 프로그램이 꺼져도 데이터가 유지될 수 있도록 영속성을 가지게 해주는 것이 Persistence Framework이다 SQL Mapper SQL 쿼리를 개발자가 직접 작성한다 쿼리 수행 결과와 객체를 매핑한다 (쿼리를 가지고 Spring Boot와 DB가 연결이 된다) ORM (Object Relation Mapping)이 있다 java 함수를 사용하면 자동으로 SQL이 만들어진 DB 테이블과 객체를 매핑한다 (쿼리 없이 간접적으로 Spring Boot에 있는 객체와 DB에 있는.. 2023. 8. 31.
스프링 테스트 코드 스프링 테스트 코드 Test 폴더에서 테스트를 진행한다 @SpringBootTest class WeatherApplicationTests { @Test void contextLoads() { } } @SpringBootTest : 테스트를 위한 자바 파일이라는 것을 명시 @Test : 이 어노테이션이 없으면 테스트를 할 수 없다 Junit 테스트 코드를 작성할 때에 자주 사용하는 라이브러리다 세부적으로 테스트를 하는 라이브러리다 assert 종류 설명 assertSame(a,b) 객체 a, b가 같은 객체임을 확인하고 객체 자체를 비교한다 assertEquals(a,b) 객체 a, b가 일치함을 확인하고 객체에 정의된 equals를 통해 비교한다 asserArrayEquals(a,b) 배열 a와 b가 일.. 2023. 8. 30.
스프링 패키지 구조 스프링 패키지 구조 기본적인 설명 Controller 에서는 클라이언트가 요청할 수 있도록 URL과 request Parameter 또는 request body를 설정해 놓는다 Service 에서는 Controller에서 받은 요청을 중간에서 로직으로 처리를 해준다 Repository 에서는 Service에서 만든 로직 바탕으로, DB에서 필요한 데이터를 쿼리문을 통해서 DB에 저장, 수정, 삭제 그리고 조회를 해준다 일반적인 패키지 구조 aop AOP 관련된 부분 - 핵심적인 관점, 부가적인 관점으로 나누어 보고 그 관점을 기준을 각각 모듈화 하는 것 config 각종 configuration 클래스로 구성이 되어 있다 controller HTTP 요청과 응답을 위한 클래스다 @Controller 어노.. 2023. 8. 29.
스프링 구동시키기 스프링 구동시키기 build.gradle 빌드 관리 도구로서, maven 또는 gradle을 선택할 수 있다 (gradle 더 최신) build.gradle은 빌드 구성 스크립트다 gradle에서 어떻게 빌드를 할지, 미리 써 놓은 스크립트다 build.gradle은 전에 선택한 의존성 (Dependency)와 같은 스프링 부트 프로젝트의 빌드와 관련된 설정 정보를 담고 있다 IDE는 이것을 읽어서, 스프링 부트 프로젝트를 설정한다 WeatherApplication에 들어간다 @SpringBootApplication public class WeatherApplication { public static void main(String[] args) { SpringApplication.run(WeatherAp.. 2023. 8. 28.
스프링 Initializer 스프링 Initializer 스프링 프로젝트를 실행할 때에, 기본적인 틀을 Spring Initializr 웹사이트, 또는 IDE에서 만들 수 있다 https://start.spring.io/ 프로젝트 Maven Project / Gradle Project 스프링의 빌드 관리 도구다 빌드 관리 도구는, 라이브러리를 관리해주고, 자바로 코딩한 프로젝트를 빌드 및 실행을 도와주는 주체이다 그 중에 Maven과 Gradle, 최신 빌드 관리 도구다 Gradle이 더 최신 것이다 (새로 만드는 프로젝트는 주로 Gradle로 만들다) Language 프로그래밍 언어를 선택하는 것이다 익숙한 언어를 선택하면 된다! Java, Kotlin, Groovy Kotlin과 Groovy는 Java에서 파생된 언어다 Spri.. 2023. 8. 24.