본문 바로가기

TIL

(127)
스프링 설정 파일 분리 # 하나의 xml 파일에 모든 모듈을 넣으면 가독성이 떨어지고 비효율적이다 일반적으로는 기능별로 구분해서 xml파일을 분리한다 기능별로 구분했기 때문에 xml 파일 이름을 기능의 이름으로 지정해서 가독성을 높이는 것이 좋다 문자열이기 때문에 3개로 나눈 xml 파일들을 배열로 구성해서 수정해준다 (필요로 하는 모듈들이 들어 있는 Ctx 파일들만 배열에 넣어서 사용하는 방식) [ 빈(Bean)의 범위 ] 싱글톤(Singleton) : 스프링 컨테이너에서 생성된 빈(Bean) 객체의 경우 동일한 타입에 대해서는 기본적으로 한 개만 생성이 되며, getBean() 메서드로 호출될 때 동일한 객체가 반환된다. new ClassName();으로 생성자를 호출하면 중복해서 생성하지만 컨테이너는 만들어질 때, 오브젝..
DI (Dependency injection) [ DI 란?(의존 주입) ] 객체지향 프로그램의 유연성(ex: 장난감 배터리가 일체형이 아닌 분리형으로 배터리가 떨어지면 배터리만 교체하면 된다) 배터리에 의존해서 배터리를 주입한다 컨테이너 안에 객체(bean)들이 있는데, 이때 커다란 객체 안에 또 다른 객체가 주입을 하는 것이 DI 형태 학사관리 프로그램에서 데이터베이스를 가져오는 클래스를 dao라고 했을 때, dao에 의존하여 학생들의 정보를 수정하거나 삭제하는 등 기능들을 구현할 때 각각의 기능들은 dao에 의존하기 때문에 DI 프로그램 방법이다
스프링 프로젝트 테스트 사진과 같이 테스트해보는 프로젝트를 메이븐 프로젝트로 생성하였다 기초적이면서 가장 중요한 것은 java/resources를 구분해야 한다 src/main/java : 자바 파일 관리 src/main/resources : 자원 관리 자바 파일은 말 그대로 코딩을 하는 파일들을 모아놓고, 자원 파일은 코딩할 때 필요한 자원들을 모아놓는다 그리고 pom.xml에 필요한 모듈들을 넣어놓는다 파일에 필요한 모듈들만 넣어놓은 모습 메인화면에서 스프링을 사용하기 전에는 생성자로 (new Transpotation) 만들어야 다른 클래스에서 사용할 수 있었는데 스프링에서 제공하는 context 모듈을 통해 접근하는 방식에서 원래 방식과 큰 차이가 있다 지금은 테스트용으로 bean이 한 개지만, 후에 프로젝트를 진행할 때..
스프링 프레임워크 # 스프링 프레임워크는 주요 기능으로 DI, AOP, MVC, JDBC 등을 제공한다 [ 스프링 프레임워크 모듈 ] 1. spring-core : 스프링의 핵심인 DI(Dependency Injection)와 IoC(Inversion of Control)를 제공 2. spring-aop : AOP구현 기능 제공 3. spring-jdbc : 데이터베이스를 쉽게(적은 양의 코드) 다룰 수 있는 기능 제공 4. spring-tx : 스프링에서 제공하는 트랜잭션 관련 기능 제공 5. spring-webmvc : 스프링에서 제공하는 컨트롤러와 뷰를 이용한 스프링 MVC 구현 기능 제공 # 스프링 프레임워크에서 제공하고 있는 모듈을 사용하려면, 모듈에 대한 의존 설정을 개발 프로젝트에 XML 파일등을 이용해서 개..
Java 통아저씨 게임 만들기 왼쪽 화면은 콘솔에 출력된 게임 진행과정이다 player 클래스에서는 생성자로 이름을 받고 게임이 끝났을 때, 결과를 win/lose로 나누어서 전적 관리를 한다 그래픽 클래스는 말 그대로 콘솔에 보기 쉽게 출력하기 위해서 만든 클래스이다 printTong 함수는 찌를 수 있는 공간이라면 즉, 빈 공간인 경우에는 0을 출력 그렇지 않다면 X를 출력해준다 그리고 15개씩 끊기 위해서 가정문으로 15개가 한 줄에 채워졌을 때 \n을 넣어준다 통아저씨 클래스에서는 주석처리를 잘해놔서 따로 부연설명 X 메인에서는 Scanner를 통해 유저들을 등록해주고 통아저씨의 구멍을 30개로 지정한 후에 게임을 시작한다 턴을 넘기는 과정이 생각보다 단순하면서 어려웠는데 플레이어 2명이 각각 0,1이라고 생각했을 때 0 % ..
Java 전화번호부 만들기 위 사진은 메인에서 원하는 정보들을 전화번호부에 넣었을 때, 콘솔에 출력되는 화면이다 Info 생성자에서는 이름과 나이, 핸드폰 번호를 매개변수로 받고 (toString은 콘솔에 어떤 걸 출력할지 나타내준다) compareTo 함수는 Comparable를 이용해 전화번호부에 있는 것들과 이름이 같지 않다면 핸드폰 번호순으로 정렬하고 이름이 같다면 이름순으로 정렬하게 만들어준다 그리고 새로운 그룹을 추가할 때, 만약 phonebook이 매개변수로 받는 새로운 그룹 이름을 가지고 있다면 "이미 존재하는 그룹입니다"를 콘솔에 출력해주고 return false를 해준다 반대로 만약 이미 존재하지 않다면 전화번호부에 추가해주고 추가된 내용을 콘솔에 출력해준다 위에 함수는 주석 처리된 내용의 함수들!
Java 학교만들기 (클래스 나누기 복습) 예전에 한걸 다시 복습하면서 보게 되면, '왜 이걸 힘들어했지..?' 싶을 정도이다 못 올린 TIL들이 3개 정도 있어서 뒤늦게라도 복습 차원 차 포스팅한다 학교 만들기는, 클래스를 나누어 상속받으면서 이클립스 콘솔에 출력해보는 연습용 문제였다 옆에 사진처럼, 랜덤으로 이름을 만들고 각 학생들의 성적표를 출력해주는 문제이다 Student 클래스를 만들어서 각 반에서 상속받아 진행한다 이름들을 배열로 지정하고, generateRandomName 함수는 이용해서 각각의 배열에서 랜덤으로 뽑은 이름들을 더해주고 리턴해준다 마찬가지로, generateRandomScore 함수는 맥스 스코어를 이용해서 학생들의 점수를 랜덤으로 뽑아줄 때 필요한 함수이다 그리고 생성자에는 이름을 함수로 받고, 공통과목인 국어와 영..
Java 행맨 구현 위 사진은 행맨을 Swing-GUI로 구현한 결과물이다 함수부터 설명하는 것이 나을 것 같다 getWordList는 path를 매개변수로 받아서 BufferedReader 클래스로 입력받은 path(=텍스트 파일)를 읽어오고 ArrayList인 word_array(String)에 넣는 후, 리턴해준다 correctWord 함수는 위에서 리턴받은 array를 넣어주고 랜덤으로 한개의 단어를 뽑아서 그 단어를 리턴해준다 (랜덤 단어를 맞춰야 하기 때문에) 그리고 메인에서는 밑에서 만들 생성자를 호출시켜준다 위 함수들을 이용해서, 단어를 하나 뽑고 그 단어를 LowerCase를 이용해서 모든 글자를 소문자로 반환한다 (사용자가 대소문자 구별 안하게 하기 위해서) 그리고 GUI 화면 상 '_' (빈칸으로 보이게..