프로그래밍 51

객체 지향 프로그래밍(OOP)

| 본문을 시작하기 전.. 객체지향 프로그래밍이란.. 자바 개발자에게 꼭 알아야 할 중요한 개념이다. 그러나 막상 객체지향 프로그래밍이 뭘까요? 라고 물어본다면.. 추상화를 통해 객체를 만들어서 프로그래밍하는것..? 이라고 밖에 떠오르지 않는다. 객체지향 프로그래밍은 개발을 하면서 부족한 점을 개선하려보니 탄생한 프로그래밍 패러다임이다. 그래서 나는 이번 포스팅에서 이전의 프로그래밍 몇가지에 대해서 먼저 이야기 해보고자 한다. | 순차적(비구조적) 프로그래밍 : 정의한 기능의 흐름에 따라 순서대로 동작을 추가하며 프로그램을 완성하는 방식이다. 간단한 프로그램의 경우, 이렇게 코드를 짜게 되면 흐름이 눈으로 보이기 때문에 매우 직관적일것이다. 그러나 프로그램의 규모가 커진다면 곤란해진다. A > B > C..

Spring IoC , Bean

| IoC / DI 란? - IoC란 Inversion of Control의 줄임말이며, 제어의 역전이라고 한다. (이를 스프링 컨테이너가 코드 대신 오브젝트에 대한 제어권을 갖고 있다고 해서 IoC라고 부른다.) - Spring에서 사용되는 IoC란 객체가 내부적으로 조작할 객체를 직접 생성하지 않고 외부로부터 주입받는 기법을 의미한다. 이때 객체를 외부로부터 주입해주는 작업을 DI(의존성 주입)이라고 부른다. ​ IoC Container는 오브젝트의 생성과 관계설정, 사용, 제거 등의 작업을 대신 해준다하여 붙여진 이름이다. 이때, IoC Container에 의해 관리되는 오브젝트들은 Bean 이라고 부른다. IoC Container는 Bean을 저장한다고 하여, BeanFactory 라고도 불린다...

JSP 팀 프로젝트 끝, 느낀점

드디어 두 달 만에 첫 프로젝트를 마무리하게 되었다!! 사실 끝나자마자 쓰려고 했으나 시간이 부족하여 국비과정이 완료되고 작성하게 되었다. 일단 한 문장으로 느낀 점을 표현하자면 "많이 아쉬웠던 프로젝트.." 인 것 같다. 몇 가지 아쉬웠던 점들이 있는데 적어보고자 한다. | 1. 미완성으로 끝난 프로젝트 스케일이 작은 프로젝트라도 완성을 했느냐 안 했느냐는 정말 중요한 것 같다. 직접 만들어서 완성시켜본 경험은 첫걸음마를 내닫는 사람들에겐 정말 중요한 것 같다. 나만해도 포트폴리오를 작성하는데 자신감이 많이 떨어졌고 아쉬움이 컸었다. | 2. 팀원들과의 커뮤니케이션 부족 예전부터 개발자는 혼자 일하는 것이 아니다. 같이 협동하여 잘 만들어진 프로젝트가 나온것이라고 여러 번 들었는데 처음엔 깨닫지 못했다..

프로그래밍/JSP 2022.04.19

Spring 5일차 : 스프링 웹 프로젝트 & 로그인, 회원가입

| 스프링 MVC 프로젝트의 기본 구성 스프링 MVC에서 어떤 단계를 거쳐서 실행되는지를 이해해야 문제 발생시 빠른 대처와 대안을 찾을 수 있다. 스프링 웹 프로젝트는 3-Tier(티어) 방식으로 구성한다. Presentation Tier(M) Business Tier(B) Persistence Tier(C) | Persistene Tier(영속 계층, 데이터 계층) -데이터를 어떤 방식으로 보관하고, 사용하는 가에 대한 설계가 들어가는 계층 - 일반적으로 DB를 많이 이용하지만, 상황에 따라서 네트워크 호출 혹은 원격 호출 등의 기술이 접목된다. | Business Tier(비즈니스 계층) =홈페이지를 만들어달라고 한 의뢰인 - 순수한 비즈니스 로직을 담고있는 영역 - 고객이 원하는 요구사항을 반영하는..

Spring 4일차 - 예외처리

스프링 없이 개발했을때 우리는 컨트롤러에서 예외가 발생했을때 매번 try catch문으로 예외처리를 해주었다. 그렇지만 스프링에서는 이 불편함을 스프링을 이용하여 한꺼번에 처리할 수 있다. 스프링에서는 @ExceptionHandler 와 @ControllerAdvice 를 이용해서 처리하게 된다. | @ControllerAdvice 말 그대로 컨트롤러에서 예외가 발생했을때 충고해 주는 곳이다. 해당 객체가 스프링의 컨트롤러에서 발생시키는 예외 처리하는 존재임을 명시해준다. (= 예외처리 여기로 다 모여~) 예외 사항을 전부 핸들링해야 한다면 중복적이고 많은 양의 코드를 작성해야 한다. 따라서 공통적인 에외사항에 대해서는 별도로 @ControllerAdvice를 이용해서 분리한다 따로 예외들만 분리해서 관..

Spring 3일차 - 스프링 MVC

| Spring-Mybatis MyBatis는 내부적으로 JDBC의 PreparedStatement를 이용해서 SQL을 처리한다. 따라서 SQL에 전달되는 파라미터는 JDBC에서와 같이 ? 로 치환되어서 처리된다. 복잡한 SQL의 경우 ?로 나오는 값이 제대로 전달 되었는지 확인하기가 쉽지 않고 실행한 SQL의 내용을 정확히 확인하기 어렵기 때문에 log4jdbc-log4j2 라이브러리를 사용하여 어떤 값인지 확인할 수 있다. | 로그 레벨 설정 테스트 코드 실행시 많은 양의 로그가 출력되기 때문에 불편할 수 있다. 이럴 때에는 로그의 레벨을 이용해서 수정해준다. resources/log4j.xml 파일에 있는 level 태그를 수정한다. (+추후에 추가 학습하자) ---------------------..

Spring 2일차 - DI(의존성 주입)

1일차에서 스프링의 개념에 대해 배웠다. 오늘은 어떻게 의존성을 주입하는지 스프링에서는 어떻게 DB를 연결하고 객체를 만드는지 직접 실습하면서 배워볼 것이다. 먼저 의존성 주입 테스트를 해볼건데 레스토랑, 셰프, 호텔 클래스를 만들어서 레스토랑과 호텔 객체에 셰프 객체를 주입하는 시나리오를 고려해보서 만들 것이다. 1. 생성자, setter를 이용한 주입으로 의존성 주입 구현 2. 설정 방식은 XML, 어노테이션을 통해서 처리 1. chef 클래스 만들기 - setter 기능 , toString() 을 자동생성하기 위해 @Data 를 import 해준다. @Data : Lombok의 setter를 생성하는 기능을 사용하기 위함과 생성자, toString(0등을 자동으로 생성하기 위함. 2. restaur..

Spring 1일차 - 스프링 프레임워크

>프레임 워크(Framework) - 뼈대나 근간을 이루는 코드들의 묶음 - 개발자는 각 개개인의 능력차이가 큰 직종이고, 개발자 구성에 따라 프로젝트 결과 역시 큰 차이를 낳는다. 이런 상황을 극복하기 위한 코드의 결과물이 바로 프레임워크이다. 프로그램의 기본 흐름이나 구조를 정하고 모든 팀원들이 이 구조에 자신의 코드를 추가하는 방식으로 개발하게 된다. 개발에 필요한 구조를 이미 코드로 만들어 놓았기 때문에 실력이 부족한 개발자라 하더라도 반쯤 완성한 상태에서 필요한 부분을 조립하는 형태의 개발이 가능하다. 개발자 입장에서는 완성된 구조에 자신이 맡은 코드를 개발해서 넣기 때문에 개발 시간을 단축할 수 있고, 회사 입장에서는 일정한 품질이 보장되는 결과물을 얻을 수 있다. >스프링 프레임워크(Spri..

JSP 7일차 - EL문과 JSTL

우리가 HTML 내부에 자바코드를 사용할때 스크립트 태그를 하나하나 다 작성하는 불편함을 감수해야 했었다. 이 불편함을 해결해줄 선배님들 어디있나~ 하고 봤더니 이미 만들어진 라이브러리가 있다. 그게 바로 EL문이다. 지금부터 EL문에 대해 자세히 알아보자. >EL문과 JSTL - 라이브러리로 자바 구문을 만들어 놓고 필요할 때마다 꺼내 쓰면 되기 때문에 유지보수에 편하다. - JSP페이지 내에서 자바코드와 HTML코드(태그형태)가 섞여 있으면 가독성이 떨어진다. 그러나 EL문과 JSTL문을 같이 사용하면 HTML과 태그형태로만 구성된 소스코드를 볼 수 있다. (가독성 향상) 1.EL문(Expression Language) - 값을 간결하고 간편하게 출력할 수 있도록 해주는 언어(값을 출력, 표현만 해준..

프로그래밍/JSP 2022.02.05

JSP 6일차 - DBCP, JNDI,Mybatis

우리는 지금까지 DB와 자바를 연결하기 위해서 DBConnection을 이용했다. 그런데 여기서 우리는 불편한 점을 느낀다. DBConnection의 경우에는 지었다 부셨다 지었다 부셨다를 반복해야하기 때문이다. 또한 쓸 때마다 마지막에 꼭 클로즈를 해야 한다. 쓰고 반납을 해야 다른 접속자가 쓸 수 있기 때문이다. 그러나 이 과정이 매우 불편하다. 게다가 동시접속자들이 많아지게 되면 그 접속자들의 접속을 보장할 수 없다. 이 불편함 때문에 나온 것이 DBCP이다. 이것은 다리 짓는 과정을 대신하여 지어진 다리를 그대로 갖다 쓰는 기법이다. 더 자세히 알아보자. > DBCP(DataBase Connection Pool) - 데이터베이스에 대한 연결들이 마치 수영장처럼 모여서 떠있는 곳이라는 의미이다. -..

프로그래밍/JSP 2022.01.27