본문 바로가기

✨ Back-end/Spring-Boot93

[Spring] DI(의존성 주입) @Autowired, @Resource, @Controller, @Service DI(의존성 주입)을 하는 방법 1. 프로그램 실행 시 필요할 것 같은 객체는 모두 만들어준다. 2. 만들어진 객체 중 필요한 객체를 의존성 주입시킨다. 프로젝트 생성시 기본 패키지 안에 있는 모든 클래스는 스프링이 자동으로 객체를 생성하는 자격이 된다. 객체 생성 어노테이션을 사용하여 객체를 생성한다. ( @Component, @Controller, @Service, @Repository 등) @Component는 스프링 초창기 버전에 사용했던 어노테이션이다. 초창기에는 밑에 있는 어노테이션들이 없었다. 이 클래스가 왜 객체를 만들어야하는지 애매모호했다. 그래서 세분화 시켰다. 역할을 부여하기 위해 세분화 한 것이 @Controller, @Service, @Repository 이다. 스프링 mapper.. 2023. 3. 15.
[Spring] 의존성 주입(DI)과 제어의 역전(IOC) 의존성 주입(DI) 이란? 객체를 직접 생성하는게 아니라 외부에서 생성한 후 주입시켜주는 방식. 걍 결합도를 느슨하게 만드는 것이다. How?? 객체를 직접 만들어서 사용하는게 아니라 주입받아서 사용한다. Spring에서 new 연산자를 안쓰는 이유가 바로 이것이다. 인터페이스 왼쪽과 같이 Ch라는 인터페이스 하나를 만들었다. 이 Ch에서는 cooking() 이라는 메소드를 가진다. 클래스 두 클래스에는 각각 일반요리사(Chef)와 짱쌘요리사(SuperChef)가 있다. 그리고 두 요리사 모두 cooking( ) 이라는 메소드를 Ch에게 상속받아 해당 메소드를 사용할 수 있다 식당(Restaurant)에서 요리할 줄아는 Ch를 고용했다. 일반요리사(Chef)와 짱쌘요리사(Chef)는 둘다 요리를 할줄 안.. 2023. 3. 15.
[Spring] 타임리프 사용해서 폼(form)만들기 - th:object, th:field 타임리프 , form에서 th를 사용하는 법 th:object를 쓰면 name 안넣어줘도 된다. th:field를 넣어준 이유는 테스트 해보기 위함이다. 자동으로 id와 name, value 3개의 값들을 보여준다. 하지만 check값과 radio는 value 속성에 값을 따로 지정해줘야한다. 그렇다면 checkbox와 radio는 어떤 값을 가질까? id와 name에만 값이 들어가고 value는 " " 과 같이 빈 값이 나타나기 때문에 따로 value 값을 넣어줘야한다. 이런식으로 쓸 수 있는 이유는 memberVO로 데이터가 넘어왔기 때문에 사용할 수 있으므로, 컨트롤에서 메소드의 매개변수에 MemberVO 커맨드 객체를 생성해줘야한다. MemberVO는 위 사진의 왼쪽에 보다시피 MemberVO 클.. 2023. 3. 15.
[Spring] 어노테이션 @RequestParam 과 @ModelAttribute @RequestParam 과 @ModelAttribute은 매개 변수에 어노테이션을 사용할 수 있다. 밑의 test 예제로 공부해보았다. @RequestParam test1 페이지 -> test2 페이지 타임리프 th:href 을 이용하여 java 데이터를 name이라는 이름으로 test2 컨트롤러에 넘긴다. 넘어오는 데이터를 받는 상세 방법 @RequestParam의 name은 넘어오는 데이터의 이름이다. 즉, name이라는 이름으로 넘어온 이름을 data로 적용시킬 수 있다. 따라서 data = java를 담고있다. test2 페이지 -> test3 페이지 test3로 이동. 여기서는 그냥 컨트롤러 이동만 해주고, 데이터는 안넘겨 줬다. @RequestParam의 required는 데이터를 필수로 받.. 2023. 3. 15.
[Spring] 스프링에서 Mybatis Oracle 데이터베이스 연동하기 1. 프로젝트 생성 시 SQL 체크항목 추가 2. application.properties 설정 쿼리가 실행되면 콘솔에 상세하게 뜨기 위해 위 두개를 주석처리하고 조금 수정했다. #xml location은 mappers 패키지 안에 *.xml로 끝나는 모든 파일 적용하는 것으로 설정해주었다. 3. build.gradle 코드 한줄 복사 implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4:1.16' //쿼리 로그 라이브러리 추가 쿼리 띄우려면 이 쿼리가 필요하다. 이후 해당 프로젝트 우클릭하여 Gradle -> Refresh Gradle을 해준다. 필요한 jar파일을 모두 가져와 읽어준다. 4. spring 로그소스 적용 해당 로그 소스 알집을 .. 2023. 3. 14.
[Spring] 스프링 form태그 이용해서 페이지 이동 컨트롤 안에 있는 총 3개의 Mapping과 템플릿 3개를 만들어 데이터를 주고 받도록 해보았다. VO 두개를 만들어 첫페이지에 있는 값을 두번째 페이지에 넘긴 후, 두번째 페이지에서 첫번째 값과 두번째 값을 담은 VO를 마지막 페이지에 넘긴다. 1. 컨트롤러를 만든다. src/main/java 폴더 밑에 controller 패키지를 만든 후 컨트롤러를 만든다. 이후 어노테이션(@)을 사용하여 Controller라는 것을 정의해주고, 경로를 앞에 하나 더추가하기 위해 @RequestMapping을 추가해준다. 2. Mapping 경로를 받아와 HTML 페이지로 이동시킨다. 앞에서 설정한 절대 경로 /board에 추가하여 /reg 라는 경로를 설정해주면, regMember.html이 열릴수 있도록 retu.. 2023. 3. 13.
[Spring] 스프링 프로젝트 생성 방법 및 데이터 전달 스프링에서 웹 개발을 하려면 프로젝트 생성을 이클립스와 또 다르게 만들어줘야한다. 우클릭 New -> Spring Starter Project를 선택한다. Frequently에서 위 4개는 필수이다. Spring Boot DevTools => 스프링을 수정하고 다시 Run안시키고 페이지를 F5누르면 바로바로 변화되는걸 볼 수있게 하는거다. 반드시 위와 같은 패키지에서 클래스 파일을 만들어주자. 프로젝트를 최초로 실행시킬 때에는 컨트롤 + F11이 아니라, 지정해서 해줘야한다. 위의 사진에서 @GetMapping 어노테이션 뒤에 경로를 지정해주었다. Spring은 메소드를 사용해서 컨트롤러 역할을 한다. 이것은 이클립스에서 사용했던 if문과 동일한 역할을 한다. 서블릿에서 사용했던 page가 return .. 2023. 3. 13.
[Spring] 스프링 설치 및 이클립스 개발 환경설정 -2 com.example.demo 패키지에서 새로운 클래스를 하나 만들어준다. 어노테이션 Controller를 만들고, 클래스 안에 어노테이션 GetMapping과 밑에 goMain() 메소드를 하나 만들어준다. 에러가 뜨면 Windows -> Preferences에서 검색창에 mark를 쳐서 Mark Occurrences를 들어온다. 이곳에서 맨 위에있는 체크박스를 해제한다. Spring Boot App을 Run 해주면 실행이된다. 혹은 com.example.demo 패키지에 DemoApplication.java를 Run 해주자. 위 태그를 아래에 있는 것으로 바꾸어준다. 태그에서 th: 자동완성 기능이 생기면 성공이다. Window -> Preferences .@qwertyuioplkjhgfdsazxcv.. 2023. 3. 13.
[Spring] 스프링 설치 및 이클립스 개발 환경설정 스프링(Spring)이란? - Java 애플리케이션 개발을 편하게 할 수 있게 해주는 오픈소스 경량급 애플리케이션 프레임워크이다. 애플리케이션 프레임 워크 - 애플리케이션을 개발하는데 있어 필요한 모든 업무 분야 및 모든 기술과 관련된 코드들의 뼈대를 제공한다. https://spring.io/ Spring | Home Cloud Your code, any cloud—we’ve got you covered. Connect and scale your services, whatever your platform. spring.io 먼저 Spring을 다운 받기 위해 위 홈페이지를 들어가자. 위 홈페이지에서 스크롤을 맨 밑으로 내리다보면 PROJECT WIKI 버튼이 있다. 클릭해서 들어가면 오른쪽에 Previ.. 2023. 3. 13.