목록Spring (18)
코디잉
✔ 다형성으로 인터페이스를 구현한 객체를 실행 시점에 유연하게 변경할 수 있다. ✔ 혼자 있는 객체는 없다. 많은 객체 클라이언트와 객체 서버는 협력 관계를 가진다. ✔ 클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 변경할 수 있다. → 클라이언트에 영향을 주지 않는 변경이 가능 ✔ 인터페이스를 안정적으로 잘 설계하는 것이 중요하다.
아래 링크에서 버전 확인 후, 설치 https://www.h2database.com/html/download-archive.html Archive Downloads www.h2database.com H2 Console 실행하고, JDBC URL 에 jdbc:h2:~/test 입력 후, Database '~경로~' not found, ~~~ 라고 뜨면서... 연결이 제대로 되지 않아서,, 아래 블로그 방법대로 윈도우 시스템 트레이 아이콘 클릭해서 나온 창으로 시도했더니 바로 됐다. https://abcdefgh123123.tistory.com/331 [java spring] Database "C:/~/test" not found, either pre-create~~ 에러 해결 해결 과정 1. url 창을 ..
✔ DI (Dependency Injection) 설정 ① 필드 주입 ◼ IntelliJ에서도 권장하지 않음 (밑줄 쳐짐) ◼ 중간에 바꿀 수 있는 방법이 아예 없다. @Controller public class MemberController { // DI-1) 필드 주입 @Autowired private MemberService memberService; } ② Setter 주입 ◼ 단점: 누군가가 MemberController를 호출했을 때 setXxx() 가 public으로 열려있어야 한다. setMemberService가 한 번 setting 되면 중간에 바꿀 일이 없는데, public하게 노출되어 있는 상태가 된다. 잘못 바꾸면 문제 생겨버린다. ◼ 의존관계가 실행 중에 동적으로 변하는 경우는 ..
https://yong-codinglog.tistory.com/62 Spring Bean 생성 🔸 DI: Dependency Injection, 의존성 주입 ◼ new 키워드로 객체 생성을 직접하지 않고, 객체 생성을 외부에서 대신 수행 ◼ 클래스/인터페이스 타입의 멤버 변수만 선언하고, 생성자 구현 ✔ 객체를 생 yong-codinglog.tistory.com 이전에도 한 번 적은 거 있음 ✔ Spring Bean 생성 ① 컴포넌트 스캔 방식 (Component Scan) @Component - @Controller - @Service - @Repository ◼ @Controller, @Service, @Repository 어노테이션이 있으면, 스프링 빈으로 자동 등록된다. ex) @Controlle..
◼ Service: 핵심 비즈니스 로직 (ex. 회원 중복가입 불가 등) ◼ Repository: DB에 접근, 도메인 객체를 DB에 저장 및 관리 비즈니스 도메인 객체를 가지고, 핵심 비즈니스 로직이 동작하도록 구현한 객체 ◼ Domain: 비즈니스 도메인 객체 (ex. 회원, 주문 등)
✔ 정적 컨텐츠, MVC 방식 @Controller public class HelloController { @GetMapping("hello") public String hello(Model model) { model.addAttribute("data", "hello!!"); return "hello"; } } ◼ Web Application 에서 첫번째 진입점: Controller ◼ localhost:8090/hello 라고 들어오면, 서버에서 받아서 Spring 한테 물어봄 그럼 Spring이 '/hello'와 매칭되는 게 있는지 Controller 먼저 찾아봄(Controller가 우선순위를 가짐) → ① 매핑되는 컨트롤러가 있으면, 해당 컨트롤러의 메서드 실행 → ② 매핑되는 컨트롤러가 없으면,..
◼ Thymeleaf (타임리프) 타임리프 장점: 서버돌리지 않고 그냥 열어도 hello! empty 라는 메세지 볼 수 있다. 템플릿 엔진으로써 동작을 하면 text=" " 안에 있는 내용으로 치환되어 보여진다. hello! empty ✔ 반복문 → th:each="변수 : 컬렉션"
HTML 파일 수정할 때마다 재시작해서 확인하기 번거로우니까 spring-boot-devtools 라이브러리 추가해주면, 서버 재시작 없이 View 파일 변경해서 확인 가능! → build > rebuild (ctrl + shift + f9) ✔ build.gradle 파일 dependencies에 아래 추가 compileOnly("org.springframework.boot:spring-boot-devtools") ✔ File > Settings > compiler > Build project automatically 체크 ✔ File > Settings > Advanced Settings > Allow auto-make to start even if developed application is cur..
◼ Maven 의존성 설정 (MyBatis & H2 Database) ▪ pom.xml 파일의 태그 안에, 사용할 외부 라이브러리 정보를 설정하면 된다. (사용할 라이브러리가 Maven Repository에 등록되어 있어야 함) ➕ pom: Project Object Model pom.xml: Maven이 프로젝트를 빌드하기 위해 필요한 정보를 기술하는 XML 파일 pom.xml org.mybatis.spring.boot mybatis-spring-boot-starter 2.2.2 com.h2database h2 ◼ application.properties 설정 spring.datasource.driver-class-name=org.h2.Driver spring.datasource.url=jdbc:h2:..
🔸 DI: Dependency Injection, 의존성 주입 ◼ new 키워드로 객체 생성을 직접하지 않고, 객체 생성을 외부에서 대신 수행 ◼ 클래스/인터페이스 타입의 멤버 변수만 선언하고, 생성자 구현 ✔ 객체를 생성하는 방법 1. Spring에 의해 객체(Spring Bean)가 생성될 수 있도록 Annotation 설정 ex) @RestController/@Controller, @Service → Spring Framework가 Component Scan 단계에서 특정 Annotation이 붙은 Class를 직접 객체로 생성해준다. → Spring Bean으로 생성해서 직접 관리해준다. 2. 사용할 객체를 멤버 변수와 생성자에 추가 3. 객체 사용 ❗❗ new 키워드를 직접 사용하지 않는다. ✔..