728x90
반응형
SMALL
라이브러리
Developer tools
- Spring Boot DevTools: 서버 재시작 없이 새로고침으로
- Lombok: 객체관리
Web
- Spring Web: 톰캣, MVC
- Rest Repositories HAL Explorer: API 리소스들 사이에서 쉽고 일관적인 하이퍼링크 제공
- Spring HATEOAS: 링크를 전달받는다. REST API 에 필수.
Security
- Spring Security: 인증 (처음에 주석처리할 것)
SQL
- Spring Data JPA: CRUD 처리 (내장 DB 와 함께 사용할 것)
- H2 Database: 내장된 DB
Ops
- Spring Boot Actuator: 모니터링
안보임
- Swagger: 문서화. REST API 서비스를 설계, 제작, 문서화할 수 있다.
- jackson-data-format-xml: 데이터 형식을 XML 포맷으로 반환
Request Mapping
Request Mapping 매핑 - ANT style pattern
?: 1개의 문자와 매칭
: 0개 이상의 문자와 매칭
*: 0개 이상의 디렉토리와 파일 매칭
{}: URI 템플릿
Settings - Editor - General - Auto Import 에서 Add unambiguous imports on the fly 체크
단축키
라인코드 이동 Alt Shift Up/Down
Alt Up/Down
구문코드 이동 Ctrl Shift Up/Down
위아래 커서이동
Alt Up/Down
Ctrl Shift Up/Down
분리
Ctrl Alt V
201: Created
DB 연동
Oracle
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>12.2.0.1</version>
<scope>runtime</scope>
</dependency>
spring:
datasource:
url: jdbc:oracle:thin:@localhost:1521:xe
username: board
password: tiger
driver-class-name: oracle.jdbc.OracleDriver
CREATE TABLE post (
id NUMBER
, title VARCHAR2(1000)
, content VARCHAR2(1000)
, writer VARCHAR2(1000)
, postDate DATE
);
CREATE SEQUENCE hibernate_sequence;
자바에서 postDate 라면 오라클에서는 post_date 로 칼럼명을 생성한다.
기본 시퀀스는 이름을 지정하지 않으면 hibernate_sequence 이다.
HikariCP 가 없어도 동작하지만 성능상 더 좋은 것 같다.
RDS
USE db;
CREATE TABLE post (
id int(100)
, title CHAR(100)
, content CHAR(100)
, writer CHAR(100)
, postDate DATE
);
도커
- Dockerfile.dev, docker-compose-dev.yml 파일 작성
- 개발
- Dockerfile, docker-compose.yml 파일 작성
- .travis.yml 파일 작성
- Travis CI 에 환경변수 설정
- DOCKER_ID
- DOCKER_PWD
- AWS_KEY
- AWS_SECRET_KEY
- RDS 생성
- Security Group 생성
- Security Group 적용
- AWS 환경변수 설정
- RDS_HOST
- RDS_USER
- RDS_PWD
- RDS_DB
- RDS_PORT
- IAM 계정 생성
- GitHub 푸시
1. 플러그인
- Settings - docker 검색 - Build, Excution, Deployment/Docker - + 버튼 - OK
- View - Tool Windows - Services - 우클릭 - Connect 로 로컬의 도커와 연결한다.
- 도커이미지들과 컨테이너들이 보이는 것을 볼 수 있다.
2. 개발환경
Dockerfile.dev
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE=target/*.jar
ADD ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
docker-compose-dev.yml
version: '3'
services:
react:
build:
context: .
dockerfile: Dockerfile.dev
ports:
- "80:80"
volumes:
- .:/app
3. 운영환경
Dockerfile
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE=target/*.jar
ADD ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
docker-compose.yml
version: '3'
services:
spring-boot:
image: devconnor/spring-boot
container_name: app-spring-boot
ports:
- "80:80"
volumes:
- .:/app
travis.yml
language: java
sudo: required
services:
- docker
before_install:
- chmod +x mvnw
- ./mvnw install -DskipTests=true -Dmaven.javadoc.skip=true -B -V
script:
- ./mvnw test -B
after_success:
- docker build -t devconnor/spring-boot .
- echo "$DOCKER_PWD" | docker login -u "$DOCKER_ID" --password-stdin
- docker push devconnor/spring-boot
deploy:
provider: elasticbeanstalk
region: "ap-northeast-2"
app: "Hello"
env: "Hello-env"
bucket_name: elasticbeanstalk-ap-northeast-2-615258856034
bucket_path: "Hello"
on:
branch: main
access_key_id: $AWS_KEY
secret_access_key: $AWS_SECRET_KEY
MVC - JSP
- dependency 추가
- application.yml
- webapp/WEB-INF/views 폴더 생성
- @Controller 와 @GetMapping("/index") 로 void 메서드 생성
- "index" 와 "/index" 모두 동작합니다.
pom.xml
<!-- Web - 필수 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- JSP - 필수 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!-- JSTL - 선택 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
application.yml
spring:
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp
JPA
1. application.yml
spring.jpa.hibernate.ddl-auto 옵션
none
사용하지 않음create
기존 테이블 삭제 후 테이블 생성create-drop
기존 테이블 삭제 후 테이블 생성. 종료 시점에 테이블 삭제update
변경된 스키마 적용validate
엔티티와 테이블 정상매핑 확인
개발초기에는 create 또는 update 를. 추후에는 validate
운영환경에서는 none 이나 validate 을 사용하자.
2. 작성일자 자동추가
- @EnableJpaAuditing 을 메인 어플리케이션에 추가
- Entity 에
@EntityListeners(AuditingEntityListener.class)
추가 - Entity 에
@CreatedDate
추가와LocalDateTime
타입으로 필드생성
@EnableJpaAuditing
@SpringBootApplication
public class CrudApplication {
public static void main(String[] args) {
SpringApplication.run(CrudApplication.class, args);
}
}
@EntityListeners(AuditingEntityListener.class)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
public class Post {
@Id
@GeneratedValue
private Integer id;
private String title;
private String content;
private String writer;
@CreatedDate
private LocalDateTime postDate;
}
Postman 으로는 작성일자가 추가되지 않고 null 로 추가되니 주의하자!!
@GeneratedValue 또한 Postman 에서는 동작하지 않는다.
728x90
반응형
LIST
'Others > 프로젝트' 카테고리의 다른 글
Online Chatting Service (0) | 2023.02.08 |
---|---|
유용한 라이브러리 - Spring Framework (0) | 2022.03.11 |
스프링 프로젝트 (0) | 2022.03.09 |
오라클 프로젝트 (0) | 2022.03.09 |
JSP 프로젝트 (0) | 2022.03.09 |