Spring Boot 🍃
-
Spring boot MultipartFile 확장자 알아내기Spring Boot 🍃 2023. 12. 3. 00:01
spring boot 에서 파일 업로드가 붙어있는 게시글을 등록 / 수정하는 페이지에서 파일 업로드를 새로 하지 않았을 경우 기존의 파일명을 가지고 신규 파일 등록을 해버리는 이슈가 발생해서 정리하게 되었다. 다양한 방법이 있겠으나 나의 경우 파일 업로드시엔 파일 확장자가 붙은 이름이 올라오고 파일을 업로드 하지 않은 경우 파일 확장자가 붙어있지 않은 파일 이름만 올라오는 경우가 생겼기 때문에 확장자가 안붙어있으면 파일 업로드를 하지 않는것으로 처리하려고 하기 위해서 파일 확장자를 검사하는 코드를 구해보았다. 보고 배운 블로그 : wildeveloperetrain public String add(HttpServletRequest request, MultipartFile file, BannerInput p..
-
Spring Boot 이미지 html에 출력하기Spring Boot 🍃 2023. 12. 3. 00:01
1. 이미지 저장 위치 확인 배운 곳 1 우선 Spring Boot 를 사용하는 프로젝트에서 이미지 같은 정적 파일들은 다음의 경로에 저장해서 관리되어야 한다. /src/main/resources/static 그리고 정적 파일을 **서버 구동 중에 추가 했다면, ** 바로 정적 파일에 접근할 수 없다. 서버 구동 중 추가된 정적 파일에 접근하기 위해서는 서버 종료 후 재실행 해야 한다. 서버 종료 후 재실행 하지 않고 접근해서 사용하기 위한 방법이 있다고 하는데, 나는 아직 해당 방법들로 성공하지 못했다. 🤨 방법들 : koonsland.tistory 이 부분은 링크만 모아둔 다음에 테스트에 성공하면 정리해야지! 2. Spring Security 적용시 Config에 Ignoring 추가 배운곳 2 스프..
-
ThymeleafSpring Boot 🍃 2023. 12. 3. 00:01
Java 템플릿 엔진으로, 서버 측에서 동적 웹 애플리케이션을 개발할 때 주로 사용한다. dependency 추가 프로젝트 생성할 때 추가해서 만들 수 있고, 프로젝트를 생성한 후라면 spring initializr 사이트를 통해 간편하게 코드를 알아낼 수 있다. 코드가 간단하니 외우는 것도 좋을 것 같다.! dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' } 의존성을 추가해 주면 resources에 아래의 사진처럼 패키지 구조가 잡힌다. static 은 이미지, css, js, 같은 정적 파일을 관리한다. template 는 html 파일을 관리한다. 테스트용으로 사용할 index.html 파일을..
-
MyBatisSpring Boot 🍃 2023. 12. 3. 00:01
객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와 주는 개발 프레임 워크. JDBC를 통해 데이터베이스에 엑세스하는 작업을 캡슐화하고 일반 SQL 쿼리, 저장 프로 시저 및 고급 매핑을 지원하며 모든 JDBC 코드 및 매개 변수의 중복 작업을 제거한다. Mybatis에서는 프로그램에 있는 SQL쿼리들을 한 구성파일에 구성하여 프로그램 코드와 SQL을 분리할 수 있는 장점을 가지고 있다. 특징 복잡한 쿼리나 다이나믹한 쿼리에 강하다 프로그램 코드와 SQL 쿼리의 분리로 코드의 간결성 및 유지보수성 향상 resultType, resultClass등 Vo를 사용하지 않고 조회결과를 사용자 정의 DTO, MAP 등으로 맵핑하여 사용 할 수 있다. 보고 배운 곳 : khj93..
-
application.yml 파일에 속성 파일 추가Spring Boot 🍃 2023. 12. 3. 00:01
보고 배운 블로그 : oingdaddy.tistory 추가할 yml 파일 생성 추가 할 설정 파일의 이름은 하고싶은데로 작성하면 된다. 확장자만 .yml 지켜줘야됨 나는 secret.yml 이라고 작성! secret.yml email: id : your_gmail_id@gmail.com pwd : your_gamil_password application.yml 파일에 include 및 값 사용 application.yml spring: config: import: classpath:secret.yml mail: username: ${email.id} password: ${email.pwd} include가 잘 되었다면 , 변수 불러올 때 아래 처럼 자동완성으로 바로 나타난다.
-
spring boot: 스케줄링Spring Boot 🍃 2023. 12. 2. 00:01
@Scheduled Scheduled 어노테이션 사용으로 , 이 어노테이션을 이용하여 스케줄링 프로그램을 작성할 수 있다. @Scheduled 어노테이션은 cron 표현식의 String 문자열을 인자로 받아서 동작한다. @Scheduled 어노테이션을 사용하기 위해서는 Application 클래스에 @EnableScheduling 어노테이션을 붙여주어야 한다. cron 표현식 리눅스 및 유닉스 기반 운영 체제에서 스케줄 작업을 지정하는 데 사용되는 표현식. cron 표현식 구성 초 분 시 일 월 요일 초 (0-59) 분 (0-59) 시 (0-23) 일 (1-31) 월 (1-12) 요일 (0-7, 일요일=0 또는 7) 사용 될 수 있는 기호 * : 모든 값. , : 값의 리스트. 쉼표로 구분된 여러 값을 ..
-
트랜잭션 transactionSpring Boot 🍃 2023. 12. 2. 00:01
데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 CRUD 작업 모두 데이터베이스의 상태를 변화시키게 됨 트랜잭션을 이루는 4가지 속성 속성에 대한 이해 필요 원자성 Atomicity 트랜잭션의 작업 처리 결과가 모두 DB에 반영 되거나, 모두 DB에 반영 되지 않아야 함. 일관성 Consistency 트랜잭션의 작업 처리 결과는 항상 일관적이어야 한다. 독립성 Isolation 여러개의 트랜잭션들이 하나의 DB에서 작업할 때 서로에게 영향을 미쳐선 안된다. 지속성 Durability 트랜잭션이 성공적으로 완료되어 DB에 변화가 생겼다면, 그 변화는 영구적이어야 한다. 트랜잭션 수행 후 실행될 수 있는 연산 2가지 커밋 Commit 트랜잭션이 성공적으로 작업을 완료했다고 판단하면 지금까지의 작업을..
-
controller에서 날짜 입력 받을때 형식 지정Spring Boot 🍃 2023. 12. 2. 00:01
@DateTimeFormat 어노테이션을 이용해서 입력받을 날짜 형식을 지정할 수 있다. void getDate( @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date ) { System.out.println(date); } 만약 controller에서 dateFormat으로 지정한 형태와 다른 형태인 데이터를 보내면 에러남! controller 에서 2023-05-22 형태로 데이터 입력 받을 준비를 했는데 👇 클라이언트에서 2023/05/22 형태로 보냈을 때 👇 클라이언트에서 2023-05-22 형태로 보냈을 때
-
spring boot 프로젝트 git 업로드 시, API key 및 DB 접속정보 숨기기Spring Boot 🍃 2023. 12. 2. 00:01
보고 배운 블로그 : @minnseong 이번 실습에서 사용하는 open api key는 1분에 60번 초과 호출시 과금 된다고 하니 비공개로 숨기는편이 좋을것 같다 🙊 1. src/main/resource 위치에 properties 설정 파일 추가 application-관리할이름.properties 라는 이름으로 파일을 생성한 후, 파일 안에 Key=value 형태로 입력을 해준다. 2. application.properties 파일에 추가해준 설정 파일 include src/main/resource 위치에 기존에 있는 spring boot 설정 파일인 application.properties 파일을 열어서 1번에서 생성해준 application-관리할이름.properties파일을 include 시켜준..
-
PersistenceSpring Boot 🍃 2023. 12. 2. 00:01
Persistence : 영속성 이 용어는 data 영속성이 있다 없다 이런 식으로 보통 사용하는데, data를 생성했던 프로그램이 종료되더라도 data는 없어지지 않는 것을 의미한다. Persistence Framework 영속성을 갖는 data를 관리하는 프레임워크 종류 1. SQL Mapper SQL을 개발자가 직접 작성해줘야 한다. - JDBC Java Database Connectivity 2. ORM Object Relation Mapping Object와 DB 테이블을 매핑. 함수를 사용해서 동작을 호출하면, ORM 내부적으로 SQL을 만들어서 실행시켜주기 때문에, 개발자가 SQL을 작성할 필요가 없다. 단점으로는, 복잡한 쿼리를 자바 메서드만으로 해결하는 것이 불편할 때도 있다는 것! - ..