본문 바로가기

Programming

TextView, ImageView, Button, EditText [ TextView ] 화면에 텍스트를 출력하는 위젯 (선택적으로 수정 가능) TextView의 상속 계층도 java.lang.Object └─ android.view.View └─android.widget.TextView TextView의 하위 클래스들 Button, CheckedTextView, Chronometer, DigitalClock, EditText TextView 속성 text - 텍스트 뷰의 가장 중요한 속성. 출력할 문자열을 지정 android:text="Hello, everyone." textColor - 문자열의 색상을 지정. #rgb, #argb, #rrggbb, #aarrggbb android:textColor="#FF00FF" textSize - 텍스트의 폰트 크기를 지정. s.. 더보기
안드로이드 뷰(View)의 속성 안드로이드 뷰(View)의 속성 id - 뷰를 칭하는 이름을 정의 - 코드나 XML문서에서 이 뷰를 참조할 때 id를 사용하므로 의미를 잘 설명할 수 있는 직관적인 이름을 사용한다. @[+] id/ID @ - id를 리소스(R.java)에 정의하거나 참조한다는 뜻, 무조건 붙여야 한다. + - id를 새로 정의한다는 뜻, 처음 정의 시에만 사용하고 참조할 때는 사용하지 않는다. id - 예약어, /뒤에 원하는 이름을 작성 ID - 고유한 명칭. 명명규칙에 부합되어야 하고, 같은 범위에 소속된 뷰끼리 중복되면 안된다. XML문서에 ID를 지정해 놓으면 R.java에 정수 상수로 정의된다. findViewById를 이용하여 뷰 객체를 찾는다. id는 뷰의 이름을 정의하는 중요한 속성이지만, 코드에서 참조할 .. 더보기
뷰의 계층 (위젯/ 레이아웃) 뷰의 계층 사용자를 대면하는 실체 (안드로이드 응용 프로그램의 화면을 구성하는 주요 단위는 액티비티이나, 액티비티 자체는 화면에 직접적으로 보이지 않음) 뷰 여러 개가 모여서 액티비티 하나를 구성, 액티비티 여러 개가 모여서 응용 프로그램을 구성 안드로이드의 사용자 인터페이스(UI)를 구성하는 핵심 컴포넌 - 화면상의 시각영역을 차지하며 자신의 모양을 그리고 사용자로 부터의 입력을 받아들인다. 뷰의 분류 위젯 (컨트롤) - 직접적으로 보이며 사용자 인터페이스를 구성. 버튼, 텍스트 뷰, 에디트, 라디오 버튼 등 - 사용자에게 정보를 보여주고 명력을 입력받는 역활 레이아웃 (뷰그룹) - 직접적으로 보이지 않음. 다른 뷰를 담는 컨테이너 역활. - 관련된 여러개의 뷰를 유기적으로 모아 놓은 뷰의 집합이고, .. 더보기
프로젝트의 구성 프로젝트의 기본 구성 AndroidManifest.xml : 프로젝트의 버전이나 이름, 구성 등에 대한 정보를 가진다 src/AndroidFirst.java : 메인 소스 파일, 이곳에 코드 작성. 응용 프로그램 동작기술.필요한만큼의 소스 추가 가능 gen/R.java : 프로젝트 내의 각종 개체에 접근할 수 있는 ID를 정의. 툴이 자동으로 관리. 직접 편집 안됨. Android Library 폴더 : 응용 프로그램이 참조하는 안드로이드의 기본 라이브러리. 의례 포함됨. assets 폴더 : 리소스 폴더, 최초 비어 있는데 이 안에 비디오, 오디오 등의 파일 저장. res/drawable 폴더 : 이미지 파일을 저장. 디폴트로 아이콘 하나가 저장되어 있되 해상도별로 세 개의 크기로 각각 제작. res/.. 더보기
Spring - POJO 지난 몇 년간 EJB3를 포함한 많은 자바의 새로운 기술과 제품들은 저마다 POJO 프로그래밍의 지원을 주요 장점으로 내세우며 등장했다. 그러나 POJO 프로그래밍이 과연 무엇이고 어떤 이득을 안겨줄 수 있는지에 대해 명확히 설명하는 것은 사실 쉽지 않다. 이 글에서는 POJO 프로그래밍이 왜 중요한지 살펴보고 그것을 통해 기존의 무겁고 지저분한 코드를 어떻게 깔끔하고 군살 없는 코드로 만들 수 있는지를 알아보자. POJO는 ‘Plain Old Java Object’의 약자이다. 이를 번역하면 ‘평범한 구식 자바 오브젝트(객체)’라고 할 수 있겠다. 도대체 평범하고 구식인 자바 오브젝트가 뭐가 다르고 특별해서 POJO라고 부르는 것일까? 그럼 평범하지 않은 최신의 자바 오브젝트는 또 무엇인가? POJO란.. 더보기
Spring - Bean 초기화 및 생명주기 BeanFactory & ApplicationContext bean factory - 스프링의 IoC를 담당하는 핵심 컨테이너 빈을 등록/생성/조회/반환/관리한다. 보통은 bean factory 를 바로 사용하지 않고 이를 확장한 application context 를 이용한다. BeanFactory 는 bean factory 가 구현하는 interface 이다. (getBean()등의 메소드가 정의되어 있음) application context - bean factory를 확장한 IoC 컨테이너 빈의 등록/생성/조회/반환/관리의 기능은 bean factory 와 같지만, 여기에 spring의 각종 부가 서비스를 추가로 제공한다. ApplicationContext는 application context가 .. 더보기
Spring - Bean Scope Bean Scope Bean의 정의는 실제 bean 객체를 생성하는 방식을 정의하는 것이다. Class와 마찬가지로 하나의 Bean 정의에 해당하는 다수의 객체가 생성될 수 있다. Bean 정의를 통해 객체에 다양한 종속성 및 설정값을 주입할 수 있을 뿐 아니라, 객체의 범위(scope)를 정의할 수 있다. Spring Framework는 5가지 scope을 제공한다. (그 중 3가지는 web-aware ApplicationContext를 사용할 때 이용할 수 있다). Scope 설명 singleton 하나의 Bean 정의에 대하여 Spring IoC Container 내에 단 하나의 객체만 존재 prototype 하나의 Bean 정의에 대하여 다수의 객체가 존재 할 수 있다. request 하나의 Be.. 더보기
Spring - IoC & DI IoC(Inversion of Control - 제어의 역전)란? IoC란 간단하게 말하여 프로그램의 제어 흐름 구조가 바뀌는 것이다. 일반적으로, main() 같은 프로그램이 시작되는 지점에서 다음에 사용할 오브젝트를 결정, 생성하고, 만들어진 오브젝트 내의 메소드를 호출하는 작업을 반복한다. 이런 구조에서 각 오브젝트느 프로그램 흐름을 결정하거나 사용할 오브젝트를 구성하는 작업에 능동적으로 참여한다. 즉, 모든 종류의 작업을 사용하는 쪽에서 제어하는 구조이다. 이에 반하여 IoC는 제어 흐름의 개념을 거꾸로 뒤집는다. 오브젝트는 자신이 사용할 오브젝트를 스스로 생성하거나 선택하지 않는다. 그리고 자신이 어떻게 만들어지고 어디서 사용되는지 알 수 없다. 모든 제어 권한을 자신이 아닌 다른 대상에게 위임.. 더보기
Spring - AOP 개념 정리 AOP (Aspect Oriented Programming) - 기능을 핵심 비지니스 로직과 공통 모듈로 구분하고, 핵심 로직에 영향을 미치지 않고 사이사이에 공통 모듈을 효과적으로 잘 끼워넣도록 하는 개발 방법이다. 공통 모듈(보안 인증, 로깅 같은 요소등)을 만든 후에 코드 밖에서 이 모듈을 비지니스 로직에 삽입하는 것이 바로 AOP 적인 개발이다. 코드 밖에서 설정된다는 것이 핵심이다. AOP가 사용되는 경우 1) 간단한 메소드 성능 검사 개발 도중 특히 DB에 다량의 데이터를 넣고 빼는 등의 배치 작업에 대하여 시간을 측정해보고 쿼리를 개선하는 작업은 매우 의미가 있다. 이 경우 매번 해당 메소드 처음과 끝에 System.currentTimeMills();를 사용하거나, 스프링이 제공하는 Stop.. 더보기
Spring MVC 와 DispatcherServlet Spring MVC 는 다른 MVC 프레임워크와 동일하게 앞단에 프론트 컨트롤러(DispatcherServler)를 두고있다. DispatcherServlet - web.xml 에 정의한 서블릿 MVC아키텍처로 구성된 프레젠테이션 계층을 만들 수 있도록 설계되어 있다.[ Spring MVC의 흐름 ] 1) DispatcherServlet의 HTTP 요청 접수 자바 서버의 서블릿 컨테이너는 HTTP 프로토콜을 통해 들어오는 요청이 스프링의 DIspatcherServlet에 할당된 것이라면 HTTP 요청 정보를 DIspatcherServlet에 전달. web.xml에는 DIspatcherServlet이 전달받을 URL의 패턴이 정의되어 있다. DIspatcherServlet는 공통적으로 진행해야 하는 파라미.. 더보기