일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- bean
- API
- 개발자기록
- 뷰
- Entity
- 깃허브에러
- oracle
- pls-00103
- GIT
- DTO
- 프레임워크
- Java
- vue
- SQL
- JSON
- react
- Spring
- Github
- CS
- https
- REST API
- 어노테이션
- autowired
- HTTP
- JavaScript
- framework
- vue3
- error
- Spring Framework
- spring boot
- Today
- Total
목록Spring Framework (8)
o-ohi-code 님의 블로그
트랜잭션 하나의 작업 단위를 구성하는 연산 묶음 *이 작업 단위는 모두 성공하거나, 모두 실패애햐만 한다.* ex) 은행 계좌 이체를 가정 A 계좌에서 돈 빠지고 B 계좌에 돈 들어간다. 이는 하나는 성공하고, 하나는 실패하면 안되는 경우이다. 둘다 성공하거나, 둘 다 실패해야 한다 이런 것을 하나의 트랜잭션으로 묶는 것이다.트랜잭션 4대 속성 (ACID) A - 원자성 : 머드 상겅 or 모두 실패 (중간 없음) C - 일관성 : 트랜잭션 전후의 데이터 항상 유효한 상태여야 한다. I - 격리성 : 동시에 실행돼도 서로 영향 안 받게 한다. D - 지속성 : 트랜잭션 성공 시, 결과는 영구적으로 저장되어야 한다. 트랜잭션이 필요한 이유여러 DB 작업이 연결된 경우 : 하..
1. DTO 객체 그대로 반환 (가장 일반적)@GetMapping("/user")public UserDTO getUser() { return new UserDTO("민성", 25);}Vue 에서는 res.data.name 이렇게 받는다.자동으로 Json 으로 변경(jackson 덕분)2. List 반환@GetMapping("/userList")public List getUserList() { return userService.getAllUsers();}프론트는 res.data[0].name 이런 식으로 사용Json 배열로 자동 변환3. Map 반환 (여러 값 묶어서 줄 때 사용)@GetMapping("/response")public Map getResponse() { Map result ..
@Bean@Configuration 이 붙은 클래스 안에서 사용된다.해당 메서드가 반환되는 객체를 Spring IoC 컨테이너에 Bean 으로 등록을 해준다.즉, 우리가 new 키워드로 직접 객체를 생성하는 대신, Spring 이 대신 생성하고 관리하도록 만드는 방법 이다.이렇게 하면 @Autowired 를 통해 (의존성 주입) 을 할 수 있게 된다. @CorssOrign(*)다른 도메인에서 오는 HTTP 요청을 허용할 수 있게 해주는 어노테이션이다.기본적으로 브라우저는 출처(origin)가 다른 서버에 요청을 보내는 걸 제한한다. ex) http:localhost:3000 (react 프론트엔드) -> http://localhost:8080 (Spring 백엔드) 요청 시 CORS 문제가 발생한다.*C..
@BuilderBulider는 필드가 많은 객체를 가독성 좋고, 실수 없이, 유연하게 만들기 위한 디자인 패턴이다.DTO 에서 자주 사용되지만, Entity, 설정 객체, 테스트 객체 등 다양한 곳에서 활용🤔 그럼 우리는 Builder 라는 어노테이션을 언제 사용하게 되는 걸까?우선 기본으로 돌아가서 단순히 객체를 만든다고 가정// 1. 클래스 생성public class Person { String name; int age; // 2. 생성자 만들기 public Person(String name, int age) { this.name = name; this.age = age; }}// 3. 객체 생성Person p = new Person("영웅", 3..
@Autowired @Autowired 는 스프링이 알아서 객체를 찾아서 넣어주는 (DI / 의존성 주입) 어노테이션이다.@Autowired BaseServiceFacade baseServiceFacade;BaseServiceFacade 라는 객체를 직접 new(생성) 하지 않아도 스프링이 미리 만들어놓은 Bean(객체) 자동으로 주입+ Bean 을 통해(의존성 관리), + @Autowired 를 통해 (의존성 주입)@Aspect 현재 클래스가 AOP 기능을 담고 있는 클래스를 스프링에게 명시해주는 어노테이션@Component@Aspect@Slf4jpublic class LoggerAspect { // 코드}이 클래스는 반드시 @Component나 @Configuration으로 Bean 등록을 해야한다..

AOP (Aspect-Oriented Programming) “핵심 로직 말고도 계속 반복되는 코드들(공통 관심사)을 한 곳에 모아서 관리하는 기술” 공통 기능을 분리해서 코드 중복 없이 관리하는 기법 핵심 로직은 그대로 두고, 부가적인 기능(로깅, 트랜잭션, 보안 등) 만 따로 떼어내는 것을 말한다.🤔 AOP 왜 사용할까?실무를 하다보면 여러 메서드에 반복되는 코드가 많이 있다는 것을 확인 할 수 있다.public void doSomething() { System.out.println("로그 시작"); // 핵심 기능 System.out.println("로그 종료");}이런 작업을 모든 메서드에 넣는 것은 힘들기 때문에 AOP 는Aspect : 공통 기능(로깅, 트랜잭션 등)을 담당..
DI (Dependency Injection) = 의존성 주입어떤 객체가 필요로 하는 다른 객체(의존성)를 직접 만들지 않고,외부에서 주입받는 방식이다.의존성은 어떤 객체가 다른 객체를 필요로 하는 관계를 말하는데여기서 의존성 주입이란. 객체가 직접 의존 대상을 만드는게 아닌 X, 외부(스프링)이 대신 만들어서 넣어주는 것을 말한다. 만약 DI 를 사용하지 않는다면...public class Car { private Engine engine = new Engine(); }// 문제점// Car 클래스가 Engine 클래스에 강하게 의존한다.// 테스트난 변경이 어려워진다... 하지만 스프링 방식(DI) 를 적용한다면..public class Car { private Engine engine;..
Spring Framework자바(Java) 기반 웹 애플리케이션을 만들기 위한 강력하고 유연한 오픈소스 프레임워크이다.✔ 복잡한 자바 웹 개발을 쉽게 만들어주는 개발용 틀(Framework)✔ 로그인, DB 연결, 트랜잭션 처리, 보안 같은 복잡한 기능들을 자동으로 해주는 도구 모음Spring Framework의 핵심 특징DI : Dependency Injection (의존성 주입) : 객체를 직접 만들지 않고 스프링이 대신 주입해줌loc (제어의 역전) : 객체의 생성과 흐름을 개발자가 X 스프링이 주도한다.AOP (관점 지향 프로그래밍) : 로깅, 보안 트랜잭션 등 공통 기능을 분리 코드가 깔끔해짐.Spring MVC : 웹 요청을 컨트롤러 - 서비스 - DAO 구조로 깔끔하게 처리.보안, 트랜잭션..