본문 바로가기

전체 글161

2022-11-28 스프링 jdbc(DB연결) - CRUD 스프링과 DB연결하기 springjdbc - dept패키지 1. WEB-INF에 lib폴더를 작성하고 ojdbc6.jar파일 추가하기 2. db연동 라이브러리를 pom.xml파일에 등록 => spring - jdbc oracle(maven중앙저장소에서 11버전까지는 지원이 안 되므로 외부저장소에 등록하고 작업) 3. 설정파일에 스프링에서 지원하는 API를 등록 - DB와의 연결을 관리하는 클래스를 등록(org.springframework.jdbc.datasource.DriverManagerDataSource) jdbc에서 DriverManager로 커넥션을 생성하는 작업과 동일함(커넥션풀로 바꾸기) DBUtil에 지원하던 기능을 지원 - jdbc에서 처리하던 공통의 작업을 수행하는 클래스 JdbcTemp.. 2022. 11. 28.
MVC 패턴이란? MVC 💡 모델-뷰-컨트롤러(model–view–controller, MVC) : 소프트웨어 공학에서 사용되는 소프트웨어 디자인패턴 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 뷰는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다. MODEL 정보들의 가공을 책임지는 컴포넌트로 비즈니스 로직을 처리한 후 모델의 변경사항을 컨트롤러와 뷰에 전달한다. 표시 형식에 의존하지 않기 때문에 사용자에게 어떻게 .. 2022. 11. 27.
2022-11-25 IoC(제어의 역전), DI(의존관계 주입) - annotation을 이용해 객체 생성하기 리뷰 이제까지 힘겹게 힘들게 객체를 만들었다면 ... 이제 코드 단 몇 줄로 이 모든 걸 대체할 수 있게 됐다. 이것을 위한 빌드업이었을까..? 하지만 위험성이 좀 있어서 디폴트로 사용하지 못하는 게 좀 슬프다 ............ Spring관련 annotation @Component : 기본 빈으로 정의하고 등록할 때 사용. 어떤 id로 빈을 등록할지 설정할 수 있음. @Component("id") 빈의 이름을 등록하지 않으면 클래스명 첫 글자를 소문자로 바꾼 이름으로 등록됨 @Autowired : 해당 타입의 빈이 있으면 자동으로 연결. @Qualifier : @Autowired를 하는 경우, 해당 타입의 빈이 두 개 이상 있을 때 정확하게 어떤 빈을 매칭할 것인지 @Qualifier이용해 명시. @Q.. 2022. 11. 26.
2022-11-25 IoC(제어의 역전), DI(의존관계 주입) - setter메소드를 이용해 객체 생성하기 리뷰 - setter메소드를 이용해 객체를 생성하는 법도 생성자를 이용할 때와 비슷하다. 다만 xml파일에서 bean을 만들 때 를 사용한다. 변하지 않는 값은 생성자 주입을, 변하는 값은 수정자 주입을 사용할 수 있는데 웬만하면 생성자 주입을 사용하는 것이 좋다. 생성자 => setter메소드 => 실습 하기 클래스의 기본생성자와 set, get메소드를 만들어주고 태그 안에 객체에서 사용하는 멤버변수명과 생성할 객체의 id를 써주면 끝~! //간략하게 적음 public class Player implements AbstractPlayer{ AbstractDice d; public Player() { } public void setD(AbstractDice d) { this.d = d; } } //매개변수 3.. 2022. 11. 26.
2022-11-25 IoC(제어의 역전), DI(의존관계 주입) - 생성자를 이용해 객체 생성하기 리뷰 생성자를 이용해 객체 생성하기 package di.constructor02; public class Test01 { public static void main(String[] args) { ApplicationContext factory = new GenericXmlApplicationContext("/config/constructor.xml"); AbstractPlayer p = factory.getBean("player", AbstractPlayer.class); p.play(); System.out.println("세번 굴린 주사위의 합:"+p.getTotalValue()); } } package di.constructor02; public class Player implements Abstract.. 2022. 11. 25.
2022-11-25 [Spring] IoC(제어의 역전), DI(의존관계 주입)에 대해서 IoC컨테이너는 DL과 DI를 제공한다. DI(Dependency Injection) : 의존성 주입, 즉 개발자가 객체를 직접호출하는 대신, 스프링 컨테이너가 내부에서 설정파일에 등록된 객체를 만들면서 그 객체가 의존하고 있는 모듈(객체)을 직접 생성해서 전달해주는 방식이다. DI(Dependency Injection) : 개발자가 스프링컨테이너로부터 직접 객체를 찾아와서 사용하는 DL과 다르게 Spring컨테이너 내부에서 설정파일에 등록된 객체를 만들면서 그 객체가 의존하고 있는 모듈(객체)을 직접 생성해서 전달해주는 작업까지 처리한다. ApplicationContext가 생성될 때 자동으로 모든 작업이 처리된다. => 이를 위해서 개발자가 설정파일에 생성할 객체와 그 객체가 사용하는 의존모듈을 어떤.. 2022. 11. 25.
2022-11-24 스프링 - IoC(제어의 역전)컨테이너를 이용해 결합도 낮은 코드만들기 IoC(Inversion of Control, 제어의 역전) - 사전적 정의 : 제어 반전, 제어의 반전, 역제어는 프로그래머가 작성한 프로그램이 재사용 라이브러리의 흐름 제어를 받게 되는 소프트웨어 디자인 패턴을 말한다. 줄여서 IoC이라고 부른다. 전통적인 프로그래밍에서 흐름은 프로그래머가 작성한 프로그램이 외부 라이브러리의 코드를 호출해 이용한다. 위키백과 작업을 구현하는 방식과 작업 수행 자체를 분리한다. 모듈을 제작할 때, 모듈과 외부 프로그램의 결합에 대해 고민할 필요 없이 모듈의 목적에 집중할 수 있다. 다른 시스템이 어떻게 동작할지에 대해 고민할 필요 없이, 미리 정해진 협약대로만 동작하게 하면 된다. 모듈을 바꾸어도 다른 시스템에 부작용을 일으키지 않는다. - 쉽게 말하자면 이전에는 개발.. 2022. 11. 24.
2022-11-23 스프링 board패키지 리뷰 - 이번엔 board패키지를 리뷰해볼 건데 전 게시글과 비교적 간략하게 작성해볼 것이다. main 메소드 1. 회원 등록하기 앞에서 했던 내용이므로 간략하게 설명 public static void main(String[] args) { //회원이 등록돼야 하므로 - db연동이 됐으면 안 해도 되는 작업 CustomerService customerservice = new CustomerServiceImpl(); CustomerDTO customer = new CustomerDTO("jang", "1234", "장동건", "VVIP"); //생성자 customerservice.register(customer); } => register() 메소드 사용하기 위해 객체를 생성해주고 생성자를 이용해 데이터를 입력.. 2022. 11. 24.
2022-11-23 스프링 customer패키지 리뷰 - 우선 전체적인 과정을 그림으로 그린다면 이렇다. - MVC패턴에서 한발짝나아가 각각의 기능을 하는 클래스들의 인터페이스를 만들어 상속받게 한다. 자기가 상속받는 클래스의 추상메소드를 구현해준다. main메소드 1. 데이터 삽입을 위한 처리 package customer; public class Main { public static void main(String[] args) { CustomerService service = new CustomerServiceImpl(); //데이터 삽입을 위한 CustomerDTO customer = new CustomerDTO("jang", "1234", "장동건", "VVIP"); service.register(customer); System.out.println.. 2022. 11. 24.