Spring13 Unable to find a single main class from the following candidates gradle로 build 시 Unable to find a single main class from the following candidates .... 관련 오류가 발생 하였다. 이 문제는 project 에서 main메서드가 여러개 있어서 어떤 것을 메인메소드로 할지 애매해져서 오류가 발생하는 것이다. 해결 방법으로는 build.gradle 파일에 메인메소드를 명시하면 된다. springBoot { mainClassName = 'abc.abc.abc.aaaApplication' } 1개 이상의 메인 메소드는 만들면 안된다. Spring 2023. 1. 29. 스프링 인터셉터 흐름 : - HTTP 요청 -> WAS -> 필터 -> 서블릿 ->스프링 인터셉터 -> 컨트롤러 - 인터셉터는 디스패처 서블릿과 컨트롤러 사이에서 컨트롤러 호출 직전에 호출 Spring 2023. 1. 5. Spring boot + JSP (비추..) Spring boot + jsp를 이용하여 화면을 만들어 보았는데 로컬에서는 // implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' // 추가 후 jstl을 사용할꺼면 또 추가를 해서 사용을 하면 된다. implementation("jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api:3.0.0") implementation("org.glassfish.web:jakarta.servlet.jsp.jstl:3.0.1") 그리고 war로 build 후 powerShell을 이용하여 켜보았는데 자꾸 에러가 떳다. 자세한 에러는 기억은 안나지만 zip close ~ 이 에러와 몇개의 에러가 나왔다. 이 문제 때문.. Spring 2023. 1. 1. MVC 패턴 MVC(Model View Controller) 하나의 서블릿이나 JSP로 처리하던 것을 컨트롤러와 뷰의 영역으로 역할을 나눈것 - 컨트롤러(Controller) HTTP 요청을 받아 파라미터를 검증하고 , 비즈니스 로직을 실행 , 뷰에 전달할 결과 데이터를 조회해서 모델에 담아준다. - 모델(Model) 뷰에 출력할 데이터를 담아둔다. 비즈니스 로직이나 데이터 접근을 알 필요는 없고 , 화면에 렌더링 하는 일에 집중할 수 있다. - 뷰(View) 모델에 담겨있는 데이터를 사용하여 화면을 그림 Spring 2022. 12. 28. AOP , DI , IOC IOC(Inversion Of Control) 제어의 역전 일반적인 Java 객체를 new로 생성하여 개발자가 관리 하는 것이 아닌 Spring Container에 모두 맡기는 것 즉, 개발자에서 -> 프레임워크로 제어의 객체 관리의 권함이 넘어 갔음 으로 ‘제어의 역전’ 이라고 함 DI(Dependency Injection) 의존성 주입 의존성으로부터 격리시켜 코드 테스트에 용이하다. DI를 통하여, 불가능한 상황을 Mock와 같은 기술을 통하여, 안정적으로 테스트 가능하다. 코드를 확장하거나 변경 할 때 영향을 최소화 한다. 순환참조를 막을 수 있다. AOP(Aspect Oriented Programming) 관점지향 프로그램 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을.. Spring 2022. 12. 20. QUERYDSL 이란 - QUERYDSL 정적 타입을 이용해서 SQL등의 쿼리를 생성해주는 프레임 워크 동적인 쿼리 작성이 편리하다 쿼리 작성시 제약 조건 등을 메서드 추출을 통해 재사용할 수 있다. build.gradle implementation "com.querydsl:querydsl-jpa" implementation "com.querydsl:querydsl-core" implementation "com.querydsl:querydsl-collections" annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa" annotationProcessor "jakarta.ann.. Spring 2022. 12. 20. WebClient - WebClient RestTemplate를 대체하는 Http클라이언트이다. (현재 RestTemplate 보다는 webClient를 권장함) 기존의 동기 API를 제공할 뿐만 아니라 , 논블로킹 및 비동기 접근 방식을 원해서 효율적인 통신 가능 WebClient는 요청을 나타내고 전송하게 해주는 빌더 방식의 인터페이스를 사용 - 싱글 스레드 방식 - Non-Blocking방식(Application이 요청을 하고 바로 제어권을 받음 , 다른 로직이 실행 됨) - JSON,XML을 쉽게 응답 받음 private static WebClient webClient = WebClient.create(); final String uri = UriComponentsBuilder.fromUriString("주소") .. Spring 2022. 12. 20. annotation @Getter lombok 의 라이브러리를 추가 하여 Getter를 자동으로 생성 해준다. @Setter lombok 의 라이브러리를 추가 하여 Setter를 자동으로 생성 해준다. @ToString lombok 의 라이브러리를 추가 하여 toString을 string 형식으로 출력 해준다. @Table 맵핑할 테이블을 지정해준다. @Entity JPA가 관리해준다. @Id 객체의 PK를 의미 한다. @GeneratedValue JPA에서 Entity의 Primary Key를 생성해 준다. @Column DB 테이블 컬럼을 맵핑한다. @OneToMany 1:N 관계를 맺기 위해서 사용 @ManyToOne N:1 관계를 맺기 위해서 사용 fetchType EAGER (한번에 호출 ) fetchType LA.. Spring 2022. 12. 20. Singleton Singleton 이란 클래스의 인스턴스(객체)가 딱 1개만 생성되는것을 보장하는 디자인 패턴이다. 생성자를 private로 막아 개발자가 new를 하지 못하게 만드는 패턴 public class Singleton { private static Singleton instance = new Singleton(); private Singleton() { // 생성자는 외부에서 호출못하게 private 으로 지정해야 한다. } public static Singleton getInstance() { return instance; } public void call() { System.out.println("call"); } } Singleton 의 문제점 구현하는 코드 자체가 많이 필요하다. 테스트하기가 어렵다. Spring 2022. 12. 20. 객체 지향 설계의 5가지 원칙 - SRP (Single responsibility principle) 단일 책임 원칙 클래스 하나는 하나의 책임만 가져야 한다. - OCP (Open/Closed principle) 개방-폐쇄 원칙 변경에는 닫혀있어야하고 , 확장에는 열려있어야 한다. - LSP(Liskov substitution principle) 리스코프 치환 원칙 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀수 있어야 한다. - ISP (Interface segregation principle) 인터페이스 분리 원칙 하나의 일반적인 인터페이스보다 여러개의 구체적인 인터페이스가 낫다. - DIP (Dependency inversion principle) 의존 관계 역전 원칙 추상화에 의존해야하지 구체화에 .. Spring 2022. 12. 19. 이전 1 2 다음