본문 바로가기
  • 문과생의 백엔드 개발자 성장기

|Backend.DevLog/JAVA24

3. Spring - Project 구성 프로젝트 구성 1. Dendencies Spring Boot DevTools : 개발에 편리한 기능들을 제공 Lombok : @annotation 사용으로 코드가 심플해짐 Mybatis Framework : db framework MySQL Driver Spring Web 2. MVC(Model,View,Controller) 구조 1) View/Controller jsp, html, ModelAndView 작업이 핵심 2) Model 데이터 Access, select 하는 작업 Mybatis가 DBCP를 이용해 싱글톤 적용 우선 웹 서버의 구조에서 각 클라이언트당 스레드의 개념으로 접근하게 된다. 위 그림을 살펴보면 3명의 유저가 동시에 서버에 접속을 해서 자원을 사용한다고 하였을 때 1) 일반적인 구조.. 2022. 10. 30.
2. Spring - Spring 개념 Framework https://spring.io/projects/spring-framework 어떠한 목적 달성을 위해 복잡하게 얽혀있는 문제를 해결하기 위한 구조며, 소프트웨어 개발에 있어 하나의 뼈대 역할을 한다. 웹 프레임워크란? '웹 서버'를 구현하기 위한 목적으로 만들어진 프레임워크이다. 웹 서버를 구현하기 위해 페이지 구현, DB 관리, 유저 인증, API 서버, 라우팅, 사이트맵, 세션 관리 등 여러 기능이 필요한데, 각 기능을 보유한 라이브러리들을 한 곳에 묶어 담은 것이 바로 프레임워크라고 이해할 수 있다. Spring Framework 스프링 프레임워크(Spring Framework)는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 한다. .. 2022. 10. 30.
1. Spring - setting 1. IDE 에서 Spring Project 실행 2. Location - Gradle 로 셋팅 후 나머지는 기본값 3. 다른건 기본값, Web 탭에서 Spring Web 설정 - Finish 4. Run As 1) Port 에러 - 이미사용중 (port 8080 was already in use) 뜬다면 프로젝트 내의 /demo1/src/main/resources/application.properties 경로로 이동후 포트변경 해준다. 2) 다시 Rus As 하면 정상적으로 작동 (콘솔이 이렇게 뜨면 정상적 작동중) 2022. 7. 8.
23. Java - 인터페이스, DAO, 인터페이스요소 인터페이스 모든 메서드가 추상 메서드로 선언됨 public abstract 모든 변수는 상수로 선언됨 public static final interface 인터페이스 이름{ public static final float pi = 3.14F; public void makeSomething(); } 인터페이스 정의와 구현 Calc.java public interface Calc { double PI = 3.14; int ERROR = -99999999; int add(int num1, int num2); int substract(int num1, int num2); int times(int num1, int num2); int divide(int num1, int num2); } Calculator.java.. 2022. 7. 7.
22. Java - 추상 클래스(abstract class) 구현, 템플릿 메서드 패턴 추상 클래스란? 구현 코드 없이 메서드의 선언만 있는 추상 메서드(abstract method)를 포함한 클래스 메서드 선언(declaration) : 반환타입, 메서드 이름, 매개변수로 구성 메서드 정의(definition) : 메서드 구현(implementation)과 동일한 의미 구현부(body) 를 가짐 ({ }) 예) int add(int x, int y); // 선언 int add(int x, int y){ } // 구현부가 있음, 추상 메서드 아님 abstract 예약어를 사용 추상 클래스는 new 할 수 없음 ( 인스턴스화 할 수 없음 ) 추상 클래스 구현하기 메서드에 구현 코드가 없으면 abstract 로 선언 abstract로 선언된 메서드를 가진 클래스는 abstract로 선언 모든 .. 2022. 7. 7.
20. Java - 재정의(overriding), 다형성 메서드 재정의하기(overring) 하위 클래스에서 메서드 재정의 하기 오버라이딩(overriding) : 상위 클래스에 정의된 메서드의 구현 내용이 하위 클래스에서 구현할 내용과 맞지 않는 경우 하위 클래스에서 동일한 이름의 메서드를 재정의 할 수 있음 VIPCustomer 클래스의 calcPrice()는 할인율이 적용되지 않음 재정의 하여 구현해야 함 VIPCustomer.java @Override public int calcPrice(int price) { bonusPoint += price * bonusRatio; return price - (int)(price * salesRatio); } @overriding 애노테이션 (annotation) 애노테이션은 원래 주석이라는 의미 컴파일러에게 특별.. 2022. 7. 1.
19. Java - 상속 객체 간의 상속 클래스 상속 새로운 클래스를 정의 할 때 이미 구현된 클래스를 상속(inheritance) 받아서 속성이나 기능을 확장하여 클래스를 구현함 이미 구현된 클래스보다 더 구체적인 기능을 가진 클래스를 구현해야 할때 기존 클래스를 상속함 상속하는 클래스 : 상위 클래스, parent class, base class, super class 상속받는 클래스 : 하위 클래스, child class, derived class, subclass 상속의 문법 class B extends A{ } extends 키워드 뒤에는 단 하나의 클래스만 올 수 있음 자바는 단일 상속(single inheritance)만을 지원함 상속을 구현 하는 경우 상위 클래스는 하위 클래스 보다 더 일반적인 개념과 기능을 가짐.. 2022. 7. 1.
18. Java - array (배열), 2차원배열, ArrayList 배열이란? 동일한 자료형의 순차적 자료 구조 인덱스 연산자[]를 이용하여 빠른 참조가 가능 물리적 위치와 논리적 위치가 동일 배열의 순서는 0부터 시작 자바에서는 객체 배열을 구현한 ArrayList를 많이 활용함 배열 선언과 초기화 배열 선언하기 int[] arr1 = new int[10]; int arr2[] = new int[10]; 배열 초기화 하기 1) 배열은 선언과 동시에 자료형에 따라 초기화 됨 ( 정수는 0, 실수는 0.0, 객체는 null) 2) 필요에 따라 초기값을 지정할 수 있음 int[] numbers = new int[] {10, 20, 30}; //개수 생략해야 함 int[] numbers = {10, 20, 30}; // new int[] 생략 가능 int[] ids; ids .. 2022. 6. 30.
17. Java - static변수, static 메서드 , 싱글톤패턴 static변수 공통으로 사용하는 변수가 필요한 경우 여러 인스턴스가 공유하는 기준 값이 필요한 경우 학생마다 새로운 학번 생성 카드회사에서 카드를 새로 발급할때마다 새로운 카드 번호를 부여 회사에 사원이 입사할때 마다 새로운 사번이 필요한 static 변수 선언과 사용하기 static int serialNum; 인스턴스가 생성될 때 만들어지는 변수가 아닌, 처음 프로그램이 메모리에 로딩될 때 메모리를 할당 클래스 변수, 정적변수라고도 함(vs. 인스턴스 변수) 인스턴스 생성과 상관 없이 사용 가능하므로 클래스 이름으로 직접 참조 Student.serialNum = 100; static 변수 테스트하기 Employee.java public class Employee { public static int s.. 2022. 6. 30.