BACK 95

Spring Boot Project(5) - 게시글 페이징, 필터링하기

Pageable을 이용하면 간단하게 Pagination 와 Sorting을 처리할 수 있다. PostsRepository public interface PostsRepository extends JpaRepository { Page findAll(Pageable pageable); @Query(value="select p from Posts p where p.subject = :subject and p.division = :division and p.is_progress = :is_progress") Page findAllByFiltering(Pageable pageable, @Param("subject") String subject, @Param("division") String division, @P..

BACK/SPRING 2023.01.24

Spring Boot Project(4) - JPA Auditing으로 생성/수정 시간 자동화

JPA Auditing으로 생성시간/수정시간 자동화하기 domain 패키지에 BaseTimeEntity 클래스를 생성한다. 이 클래스는 모든 Entity의 상위 클래스가 되어 Entity들의 createdDate, modifiedDate를 자동으로 관리한다. @Getter @MappedSuperclass @EntityListeners(AuditingEntityListener.class) public abstract class BaseTimeEntity { @CreatedDate @Column(updatable=false) private String createdDate; @LastModifiedDate private String modifiedDate; @PrePersist public void onPr..

BACK/SPRING 2023.01.24

Spring Boot Project(3) - 게시글 CRUD

게시물 Entity domain 패키지를 만든다. 도메인이란 게시글, 댓글, 회원 등 소프트웨어에 대한 요구사항 혹은 문제 영역이다. @Getter @NoArgsConstructor @Entity public class Posts extends BaseTimeEntity { @Id @GeneratedValue(strategy= GenerationType.IDENTITY) @Column(name="post_id") private Long id; @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="member_id") private Member member; @Column(length = 500, nullable = false) private String title; ..

BACK/SPRING 2023.01.24

Spring Boot Project(2) - 프로젝트 세팅, MySQL 연동하기

프로젝트 생성 프로젝트 설정을 해준다. 프로젝트에서 사용할 의존성을 추가한다. plugins { id 'java' id 'org.springframework.boot' version '2.5.6' id 'io.spring.dependency-management' version '1.1.0' } group = 'com.toy' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring..

BACK/SPRING 2023.01.24

[Spring] 컴포넌트 스캔 / @Autowired

지금까지 스프링 빈을 등록할 때는 자바 코드의 @Bean이나 XML의 등을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열했다. → 관리할 빈이 많아지면 관리하기 번거로워 진다. 그래서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 설정파일이 없다면 의존관계는 어떻게 주입할까? → @Autowired를 사용해 자동 의존관계 주입을 한다 컴포넌트 스캔 @Component를 가진 모든 대상을 가져와서 빈에 등록하기 위해 찾는 과정 컴포넌트 스캔은 @Component 애노테이션이 붙은 클래스를 스캔해서 스프링 빈으로 등록한다. 참고로 @Configuration 이 컴포넌트 스캔의 대상이 된 이유도 @Configuration 소스코드를 열어보면 @Compone..

BACK/SPRING 2023.01.17

[Spring] DI / IoC, 컨테이너, 의존성 주입 방법

DI (Dependency Injection) DI(Dependency Injection)란 스프링이 다른 프레임워크와 차별화되어 제공하는 의존 관계 주입 기능으로, 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입 시켜주는 방식이다. DI(의존성 주입)를 통해서 모듈 간의 결합도가 낮아지고 유연성이 높아진다. 의존 관계 먼저 의존 관계가 무엇인지 알아보자. UML 모델에서는 두 클래스의 의존관계를 다음과 같이 점선으로 된 화살표로 표현한다. A가 B에 의존하고 있음을 나타낸다. B의 기능이 추가하거나 변경되면 A에 영향을 미친다. 의존 관계에는 방향성이 있다. A가 B에 의존하지만, 반대로 B는 A에 의존하지 않는다. 의존성 주입 첫번째 방법은 A객체가 B와 C객체를 New 생성자를 통해서 직접..

BACK/SPRING 2023.01.09

[Spring] Spring AOP란

Spring AOP 관점 지향 프로그래밍(AOP-Aspect Oriented Programming) AOP는 관점을 기준으로 묶어 개발하는 방식을 말한다. 관점(aspect)이란, 어떤 기능을 구현할 때 그 기능을 핵심 기능과 부가 기능으로 구분해 각각을 하나의 관점으로 보는 것을 의미한다.핵심 기능은 주로 핵심 비지니스 로직이고, 부가 기능은 핵심 로직을 실행하기 위한 데이터베이스 연결, 로깅, 파일 입출력 등이 있다. 여러 비지니스 로직에서 반복되는 부가 기능을 하나의 공통 로직으로 처리하도록 모듈화해 삽입하는 방식을 AOP라고 한다.  => 흩어져 있는 부분들을 Aspect를 이용해 모듈화 시킨 것을 볼 수 있다. 모듈화 시킨 Aspect를 어느 곳에 사용해야 하는지 정의해주면 된다. AOP 목적소..

BACK/SPRING 2023.01.02

[Spring] MVC 동작 원리

Spring MVC Spring MVC란 웹 애플리케이션 개발을 위한 MVC 패턴 기반의 웹 프레임워크이다. 애플리케이션의 구성 요소를 Model, View, Controller로 분리한다. Model 데이터 관리 및 비지니스 로직을 처리하는 부분이다. 요청에 의한 로직만 처리하고 이 결과를 어디에, 어떻게 사용하는지는 상관하지 않는다. 뷰나 컨트롤러에 대한 어떠한 정보도 알면 안된다. 데이터의 변경이 일어났을때 뷰를 참조하는 내부속성값을 가지면 안된다는 것이다. ex) DAO, DTO, Service @Service를 통해 스프링 컨테이너에 등록된 객체는 Model에 해당된다. View 비지니스 로직의 처리 결과를 통해 사용자 인터페이스가 표현되는 구간이다. Model을 통해 전달받은 데이터가 어떤 데..

BACK/SPRING 2022.12.25
반응형