좋은 객체 지향 설계의 5가지 원칙(SOLID 원칙) 1.SRP : 단일 책임 원칙(Single Responsibility Principle) 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 모호하다 → 기준은 변경이다. 변경이 있을 때 파급효과가 적으면 단일 책임 원칙을 잘 따른 것이다. 2. OCP : 개방-폐쇄 원칙(Open/Closed Principle) 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. 다형성 활용 → 인터페이스를 구현한 새로운 클래스를 하나 만ㄷ르어서 새로운 기능을 구현 역할과 구현의 분리하면 된다. 3. LSP : 리스코프 치환 원칙(Liskov Substitytion Principle) 프로그램의 객체는 프로그램의 확장성을 깨뜨리지 않으면서..
공부/Spring
요약 Spring MVC의 @RestController은 @Controller와 @ResponseBody의 조합 (@Controller + @ResponseBody = @RestController) @Controller의 역할은 Model 객체를 만들어 데이터를 담고 View를 찾는 것. @RestController는 단순히 객체만을 반환하고 객체 데이터는 JSON 또는 XML 형식으로 HTTP 응답에 담아서 전송. 차이 1. @Controller는 클래스를 Spring MVC 컨트롤러로 표시하는데 사용 @RestController는 RESTful 웹 서비스에서 사용되는 특수 컨트롤러이며 @Controller + @ResponseBody와 동일 // 아래 두 코드는 동일한 동작 // @Controller..
CORS(Cross-origin resource sharing)웹 페이지의 제한된 자원을 외부 도메인에서 접근을 허용해주는 매커니즘 * : 모든 도메인 허용할 경우@RestController@RequiredArgsConstructor@RequestMapping("/api/v1/products")@CrossOrigin("*") // * : 모두 접근 허용public class ProductController {} 특정 도메인 허용할 경우콤마로 구분@CrossOrigin(origins = "http://domain1.com, http://domain2.com")@RequestController@RequestMapping("/account")public class AccountController{ @..
page도큐먼트 링크https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/Page.html#method.summary Page (Spring Data Core 3.1.2 API)getTotalPages int getTotalPages() Returns the number of total pages. Returns: the number of total pagesdocs.spring.io page사용 방법 1. 쿼리 사용// public interface MemberRepository extends JpaRepository 클래스 내부Page findAll(Pageable pageable);// ..
pom.xml에서 아래와 같이 의존성 연결을 하였다.자세한 건 주석을 참고하자.xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 com.playdata springLegacyProject war 1.0-SNAPSHOT springLegacyProject Maven Webapp http://maven.apache.org 테스트코드 --> junit junit 3.8.1 test org.springfr..
controller → interface → service → dto @RequestMappting("/user") : 주로 경로에 대한 매핑을 지정하는 데 사용@GetMapping("/user/login") 이렇게 작성해야 하는데 "/user" 생략할 수 있게 해줌 // controller @GetMapping("/login") // #1 url에 /login입력하면public String getLoginPage(){return "/user/login"; // #2 login페이지로 이동해라 } method="post" action="/user/login"> // #3 login페이지는 여기 #5 post(controller의 @postMapping) 로 보내겠다 type="text" name="..