2024. 2. 13. 17:53ㆍ2023.11.21-2024.05.31
1.스프링 설치
Spring Tools4 > 맨 아래 Spring Tool Sutie 3 wiki 다운
*환경변수 설정 > 다른 블로그 많으니까 참고해서 보기
*폴더 위치 외우기
src/main/java : 작성되는 코드의 경로
src/main/resources : 실행할 때 참고하는 기본 경로( 주로 설정 파일들을 넣는다)
src/test/java : 테스트 코드를 넣는 경로
src/test/resources : 테스트 관련 설정 파일 보관 경로
servlet-context.xml : 웹과 관련된 스프링 설정 파일
root-context.xml : 스프링 설정 파일
views : 템플릿 프로젝트의 jsp 파일 경로
web.xml : 톰캣의 web.xml 파일
pom.xml : 메이븐이 사용하는 pom.xml
*의존성 주입
-
*controller
//2024.02.13
//새로운 controller만들기
/*
* @Controller = 객체생성 = 컨트롤러로 만들기
* @Service = 객체생성 = 서비스로 만들기
* @Repository = 객체생성 = DAO
* @Component = 객체생성 = 그 외 객체로 만들기
*/
@Controller
public class IndexController {
//주입
//@autoWired = 스프링 제공 = 객체의 타입으로 검사 >이걸 제일 많이 씀
// @Qualifier("")
//@Inject = 자바 제공 =객체의 타입이 일치하면 자동주입
// @named("")
//@Resources = 자바 제공 =id가 일치하는 것 주입
// @Resource(name="")
@Inject
private Human human;
//@RequestMapping(value = "/", method = RequestMethod.POST)
//@RequestMapping(value = "/") GET, POST 같이 들어올때
//@RequestMapping(value = "/", method = RequestMethod.GET)
//@RequestMapping("/")// 어차피 같이 들어오니까 축약해 놓은 것
@GetMapping("/")
public String home() {
// Human h = new Human();
// h.setAge(10);
// h.setName("홍길동");
System.out.println(human.getAge());//0
System.out.println(human.getName());//null
return "index"; // /WEB-INF/views/index.jsp
}
//POJO =
//DI = 의존성 주입 =객체를 생성하지 않고 객체를 사용하는 것
//AOP = 관점지향 프로그래밍
//IoC = 제어 역전 = 객체 생명주기 = 스프링에게 제어 권한이 있는 것.
// Life Cycle = (객체 생성 -> 사용 -> 종료)
//결합도는 낮을수록 좋고, 응집도는 높을수록 좋다
//Controller -> Service -> Repository -> Mybatis ->DB
// DAO maridb
//MVC ->
//M(모델) 데이터 = 데이터베이스 값, DAO/DTO/mybatis/DB
//V (뷰) 화면 = Model값을 붙여 사용자에게 보여줍니다.
//C(컨트롤러) 흐름제어 = 사용자 요청이 들어오면 먼저 동작
}
@Controller
package org.mask.dto;
import lombok.Data;
@Data
public class BoardDTO {
private int board_no, board_count, comment;
private String board_title, boatd_write, board_date;
}
package org.mask.human;
import lombok.Getter;
import lombok.Setter;
//test DI
@Getter
@Setter
public class Human {
private int age;
private String name;
}
*자습시간에 책보면서 정리하기
스프링 레거시 = jsp
스프링 부트 = jsp, 타임리프
(spa도 해야하고, aws도 해야하고, 도커도 해야하고, 리눅스도 해야하고)
package org.mask.controller;
import javax.inject.Inject;
import org.mask.human.Human;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
//2024.02.13
//새로운 controller만들기
/*
* @Controller = 객체생성 = 컨트롤러로 만들기
* @Service = 객체생성 = 서비스로 만들기
* @Repository = 객체생성 = DAO
* @Component = 객체생성 = 그 외 객체로 만들기
*/
@Controller
public class IndexController {
//주입
//@autoWired = 스프링 제공 = 객체의 타입으로 검사 >이걸 제일 많이 씀
// @Qualifier("")
//@Inject = 자바 제공 =객체의 타입이 일치하면 자동주입
// @named("")
//@Resources = 자바 제공 =id가 일치하는 것 주입
// @Resource(name="")
@Inject
private Human human;
//@RequestMapping(value = "/", method = RequestMethod.POST)
//@RequestMapping(value = "/") GET, POST 같이 들어올때
//@RequestMapping(value = "/", method = RequestMethod.GET)
//@RequestMapping("/")// 어차피 같이 들어오니까 축약해 놓은 것
@GetMapping("/")
public String home() {
// Human h = new Human();
// h.setAge(10);
// h.setName("홍길동");
System.out.println(human.getAge());//0
System.out.println(human.getName());//null
return "index"; // /WEB-INF/views/index.jsp
}
//POJO =
//DI = 의존성 주입 =객체를 생성하지 않고 객체를 사용하는 것
//AOP = 관점지향 프로그래밍
//IoC = 제어 역전 = 객체 생명주기 = 스프링에게 제어 권한이 있는 것.
// Life Cycle = (객체 생성 -> 사용 -> 종료)
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>index</h1>
인덱스 입니다.
</body>
</html>
POJO =
DI = 의존성 주입
의존성 : 하나의 객체가 다른 객체 없이 제대로 된 역할을 할 수 없다는 것을 의미
A객체가 B객체 없이 동작이 불가능한 상황=> A가B에 의존적이다
주입
AOP = 관점지향 프로그래밍
IoC = 제어 역전 = 객체 생명주기 = 스프링에게 제어 권한이 있는 것.
// Life Cycle = (객체 생성 -> 사용 -> 종료)
기존 사용 방법
객체 생성 > 객체에 값 집어넣기,> 값 불러오기
public String home() {
Human h = new Human();
h.setAge(10);
h.setName("홍길동");
System.out.println(h.getAge());//0
System.out.println(h.getName());//null
return "index";
root-context.xml에서 만들어주기
bean 안에 만들어 주기. 자바는 콩이라 어쩌구...
클래스, 아이디, 네임, 밸류 정확히 알기
<bean class="org.mask.human.Human" id= "human">
<!-- 패키지명.클래스명 id >어떻게 부를건지/ new human과 같은 의미-->
<property name="age" value="150"></property>
<property name="name" value="홍길동"></property><!-- 이건 변수 -->
</bean>
롬복 lombok
getter/setter, toString(), 생성자 등을 자동으로 생성해준다.
>1.18.3
설치 후 추가하고 싶은 이클립스 추가 후 인스톨 누르면 끝
자동으로 추가 되지 않았을 경우
porm.xml> <dependencies> 아래 추가 하기.
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
</dependency>
@Getter
@Setter 자동완성
@Data로 자동완성하면 더 다양하게 나온다.
package org.mask.human;
import lombok.Getter;
import lombok.Setter;
//test DI
@Getter
@Setter
public class Human {
private int age;
private String name;
}
MyBatis
https://mybatis.org/mybatis-3/ko/getting-started.html
https://mybatis.org/dtd/mybatis-3-config.dtd">
//Controller -> Service -> Repository -> Mybatis ->DB
// DAO maridb
//MVC ->
//M(모델) 데이터 = 데이터베이스 값, DAO/DTO/mybatis/DB
//V (뷰) 화면 = Model값을 붙여 사용자에게 보여줍니다.
//C(컨트롤러) 흐름제어 = 사용자 요청이 들어오면 먼저 동작
package org.mask.service;
import java.util.List;
import org.mask.dto.BoardDTO;
import org.springframework.stereotype.Service;
//Controller의 요청에 맞추어
//Repository에서 받은 정보를 가공하여
//Controller에게 넘겨주는 비지니스 로직
@Service
public class BoardService {
public List<BoardDTO> boardList() {
System.out.println("서비스입니다.");
return null;
}
}
package org.mask.controller;
//게시판 관련 기능을 여기에 넣겠습니다.
import java.util.List;
import org.mask.dto.BoardDTO;
import org.mask.service.BoardService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class BoardController {
//서비스와 연결하기
@Autowired
private BoardService boardService;
@GetMapping("/board")
public String board() {
//DB에서 값을 불러와서 화면에 찍어주고 싶어요
// model jsp
//Controller = 흐름제어
//Service = 로직
//Repository = DAO
//service에게 일 시키기
System.out.println("컨트롤러입니다.");
List<BoardDTO> list = boardService.boardList();
return "board"; //jsp file name
}
}
'2023.11.21-2024.05.31' 카테고리의 다른 글
20230215 스프링3일차() (0) | 2024.02.15 |
---|---|
20240214 스프링2일차(어제복습) (0) | 2024.02.14 |
240208 스프링 맛보기 (0) | 2024.02.08 |
240207 게시판만들기 (0) | 2024.02.07 |
240204 게시판만들기-리뷰게시판 만들기 (1) | 2024.02.04 |