retrospect: 멋쟁이 사자처럼 백앤드 스쿨 2022.10.18 회고
·
회고록/Archive
* DB 1. 보안 위험 상황 MySQL과 인텔리제이를 연동할 때 다음과 같이 3가지를 입력하게 된다. Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306", "root", "1234"); DBMS 접속 아이디 DBMS 접속 비밀번호 DBMS 접속 URL 로컬 데이터베이스로 연동할 경우, 해당 데이터들이 로컬에 접속되기 때문에 주소가 노출되어도 보안에 큰 문제가 발생하지 않지만 클라우드와 같은 공유 주소를 사용할 경우 데이터가 노출되어 보안에 심각한 위협을 받게 된다. 예시 강사님 DB 해킹 (Do you have bitcoin?) Class.fo..
[토비의 스프링] 스프링의 IoC - 오브젝트 팩토리를 이용한 스프링 IoC
·
Server/Spring&Spring Boot
스프링의 IoC 오브젝트 팩토리를 이용한 스프링 IoC 애플리케이션 컨텍스트와 설정정보 빈 스프링이 제어권을 가지고 직접 만들고 관계를 주여하는 오브젝트 오브젝트 단위의 애플리케이션 컴포넌트 스프링 컨테이너가 생성과 관계설정, 사용 등을 제어해주는 제어의 역전이 적용된 오브젝트 빈의 생성과 관계설정 같은 제어를 담당하는 IoC 오브젝트를 빈 팩토리라고 부른다. 보통 빈 팩토리보다는 이를 좀 더 확장한 애플리케이션 컨텍스트를 주로 사용 DaoFactory를 사용하는 애플리케이션 컨텍스트 @Configuration 어노테이션 추가 스프링이 빈 팩토리를 위한 오브젝트 설정을 담당하는 클래스라고 인식. 오브젝트를 만들어주는 메소드에 @Bean 어노테이션 추가. UserDao()메소드는 UserDao 타입 오브젝..
[토비의 스프링] 제어의 역전 - 오브젝트 팩토리
·
Server/Spring&Spring Boot
IoC 제어의 역전(Inversion of Control) 오브젝트 팩토리 UserDaoTest는 UserDao의 기능이 잘 동작하는지를 테스트하려고 만든 것인데, 다른 책임까지 떠맡고 있으므로 문제가 있다. 이걸 분리하는 작업을 진행한다. 팩토리 객체의 생성 방법을 결정하고, 만들어진 오브젝트를 돌려준다. 이런 일을 하는 오브젝트를 팩토리(factory)라고 부른다. 단지 오브젝트를 생성하는 쪽과 생성된 오브젝트를 사용하는 쪽의 역할과 책임을 깔끔하게 분리하는 목적으로 사용. public class DaoFactory { public UserDao userDao(){ // 팩토리의 메소드는 UserDao 타입의 오브젝트를 어떻게 만들고, 어떻게 준비시킬지 결정. ConnectionMaker connec..
[토비의 스프링] 오브젝트와 의존관계 - 인터페이스, 책임의 분리
·
Server/Spring&Spring Boot
3-2. 인터페이스의 도입 인터페이스는 자신을 구현한 클래스에 대한 구체적인 정보는 모두 감춰버린다. 인터페이스로 추상화해놓은 최소한의 통로를 통해 접근하는 쪽에서는 오브젝트를 만들 때 사용할 클래스가 무엇인지 몰라도 된다. 인터페이스는 어떤 일을 하겠다는 기능만 정의해놓은 것이다. 따라서 인터페이스에서는 어떻게 하겠다는 구현 방법은 나타나 있지 않다. public interface ConnectionMaker { public Connection makeConnection() throws ClassNotFoundException, SQLException; } makeConneciont() 메소드를 호출하면 Connection 타입의 오브젝트를 만들어서 돌려줄 것을 기대할 수 있다. public class..
[토비의 스프링] 오브젝트와 의존관계 - DAO의 확장
·
Server/Spring&Spring Boot
3.DAO의 확장 데이터 엑세스 로직을 어떻게 만들 것인가, DB 연결을 어떤 방법으로 할 것인가 라는 두 개의 관심을 상하위 클래스로 분리했다. 변화의 성격이 다른 것을 분리, 서로 영향을 주지 않은 채로 각각 필요한 시점에 독립적으로 변경할 수 있게 하기 위해 추상 클래스를 만들고 이를 상속한 서브클래스에서 변화가 필요한 부분을 바꿔 쓸 수 있게 햇다. 하지만 단점이 많은, 상속이라는 방법을 사용했다는 사실이 불편하게 느껴진다. 3-1. 클래스의 분리 상속 관계도 아닌 완전히 독립적인 클래스로 만들어 보자. DB 커넥션과 관련된 부분을 서브 클래스가 아니라, 아예 별도의 클래스를 담아보자. SimpleConnectionMaker라는 새로운 클래스를 만들고 그 안에 DB 생성 기능을 넣는다. 각 메소드..
[토비의 스프링] 오브젝트와 의존관계 - DAO의 분리
·
Server/Spring&Spring Boot
2.DAO의 분리 2-1. 관심사의 분리 개발자가 객체를 설계할 때 가장 염두에 둬야 할 사항은 바로 미래의 변화를 어떻게 대비할 것인가이다. 객체지향 기술이 만들어내는 가상의 추상세계 자체를 효과적으로 구성할 수 있고, 이를 자유롭고 편리하게 변경, 발전, 확장시킬 수 있다는데 의미가 있다. 분리와 확장을 고려한 설계 변경이 일어날 때 필요한 작업을 최소화하고, 변경으로 인한 문제를 일으키지 않을 수 있다. 모든 변경과 발전은 한 번에 한 가지 관심사항에 집중해서 일어난다. 프로그래밍의 기초 개념중 관심사의 분리를 객체 지향에 적용해보면, 관심이 같은 것끼리는 하나의 객체 안으로 또는 친한 객체로 모이게 하고, 관심이 다른 것은 가능한 한 따로 떠렁져서 서로 영향을 주지 않도록 분리하는 것. 2-2. ..
[토비의 스프링] 오브젝트와 의존관계 - 초난감 DAO
·
Server/Spring&Spring Boot
1. 초난감 DAO DAO(Data Access Object) DB를 사용하여 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트 1-1. User package tobi01.conangam.user.domain; public class User { String id; String name; String password; public String getId() { return id; } public String getName() { return name; } public String getPassword() { return password; } public void setId(String id) { this.id = id; } public void setName(String name) { thi..
[토비의 스프링] 스프링이란?
·
Server/Spring&Spring Boot
스프링이란? 자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크 Java Virtual Machine에서 작동하며, 아파치 라이선스를 따르는 오픈 소스 프레임워크 스프링 컨테이너 설정 정보를 참고하여 애플리케이션을 구성하는 오브젝트를 생성하고 관리 독립적으로 동작할 수도 있지만 보통 웹 모듈에서 동작하는 서비스나 서블릿으로 등록하여 사용 Ioc/DI, 서비스 추상화, AOP IoC/DI 오브젝트의 생명 주기와 의존관계에 대한 프로그래밍 모델 객체지향 설계 원칙과 디자인 패턴의 핵심 원리를 담고 있다. 스프링이 직접 제공하는 모든 기술과 API, 컨테이너도 IoC/DI방식으로 작성됨 서비스 추상화 환경이나 서버, 특정 기술에 종속되지 않고 이식성이 뛰어난 애플리케이션을 만들 수 있도록 지..
코드플리
'토비의 스프링' 태그의 글 목록