bean 객체에는 다양한 속성들이 존재한다. 이번 포스팅에서는 그 중에서 객체 로드에 관련된 속성 3가지를 정리하려고 한다. 그렇게 복잡한 내용이 아니므로 3개의 속성 모두 한번에 설명하겠다. 1. init-method: bean 객체가 처음 생성될 때, 호출할 메서드를 지정할 수 있는 속성 2. destroy-method: bean 객체가 소멸할 때, 호출할 메서드를 지정할 수 있는 속성 3. lazy-init: true 로 설정되면, bean 객체가 프로젝트가 로드될 때 생성되는 것이 아닌 실제로 사용되는 시점에 생성되도록 하는 속성 ◎LgTV package polymorphism; public class LgTV implements TV{ public LgTV() { // TODO Auto-gene..
흔히들 bean 객체를 쓰면 모듈간에 결합도가 낮아져서 개발이 편리해진다는데... 그럼 결합도는 뭐고, bean을 사용하면 어떤 점이 구체적으로 좋다는 걸까? 바로 확인해보자. 우선 결합도는 정보처리기사 공부할 때 나오는 필기 & 실기에 무조건 나오는 개념이며, 쉽게 말해 어떤 모듈이 다른 모듈에 얼마나 의존하고 있는 지 정도로 나타낸 것이다. (21년 1회 실기에도 나왔지만, 틀렸...) 즉, 결합도가 높을 수록, 수정할 때 서로 얽혀있는 것들이 많아 쉽사리 건들기 힘들다는 말이다. 바로 이해되는 예제를 하나 확인해보자. 다음과 같이 SamsungTV와 LgTV 객체가 존재하며, 두 객체는 동일한 이름의 메서드를 가지고 있다. ◎SamsungTV.java package polymorphism; publ..
STS란 Spring 프레임워크를 좀 더 쉽게 사용하기 위해서 eclipse 기반으로 만들어진 개발 툴이다. 이클립스 기반이기 때문에 설치를 제외한 거의 모든 부분이 이클립스와 동일하지만, 설치, 프로젝트 생성 이후에 조금 자바 버전에 따라 조금 건드려야 하는 부분이 있기 때문에 정리해보려고 한다. STS 다운로드는 다음 링크에서 가능하다. STS: https://spring.io/tools Spring Tools 4 is the next generation of Spring tooling Largely rebuilt from scratch, Spring Tools 4 provides world-class support for developing Spring-based enterprise applicat..
bean 객체가 필요한 객체를 스프링 컨테이너 (BeanFactory 나 ApplicationContext) 로부터 직접 사용해야 할 경우에 ApplicationContextAware 인터페이스를 구현받아, 따로 선언하지 않고도 다른 객체를 직접 사용할 수 있다. ◎LifeBean(interface) package test.exam07; public interface LifeBean { void lifeMessage(); } ◎LifeBeanImpl package test.exam07; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanNameAware; import org.springf..
bean 객체 생성 시 초기화 작업을 각 인터페이스를 구현받아 사용할 수 있다. 1. init-method : 커스텀 초기화 메서드 2. destroy-method : 커스텀 소멸 메서드 3. BeanNameAware 인터페이스 => 빈 객체가 자기 자신의 이름을 알아야 하는 경우에 사용 => 빈 클래스가 BeanNameAware 를 구현한 경우 컨테이너는 setBeanName( ) 메서드를 호출하여 빈 객체의 이름을 전달 => setBeanName(String arg) : 객체가 생성될 때 해당 객체 빈 의 id( 혹은 name) 값을 전달 받는 메서드 ◎LifeBean.java package test.exam06; public interface LifeBean { void lifeMethod(); }..
스프링은 기본적으로 하나의 빈 설정에 대해 1 개의 객체만의 생성한다 즉, xml 에서 생성한 bean 객체의 Scope 기본값은 객체 맴버를 재사용하는 singleton 이다. bean 태그의 scope 속성값은 다음과 같다. 이해를 위해 예제를 하나 확인해보면, ◎BeanTest package test.exam05; public class BeanTest { public BeanTest() { } public void printTest() { System.out.println("안녕하세요"); } } ◎exam.xml 다음과 같이 bean 객체 내부에 scope 속성을 명시하지 않았다면, scope의 default인 singleton으로 설정된다. ◎main package test.exam05; im..
Spring DI 에 인자를 전달하는 것과 같이 어떤 객체를 주입할 수도 있다. 객체 주입에는 크게 2가지 방법이 있다. 1. 생성자 방식(constructor-arg 이용) ◎JdbcDao package test.exam03; public class JdbcDao { public JdbcDao() { } public int insert() { System.out.println("insert 작업"); return 0; } public void delete() { System.out.println("delete 작업"); } } ◎JdbcService package test.exam03; public class JdbcService { private JdbcDao jdbcDao; public JdbcSe..
기본적으로 context를 활용한 DI를 구성할 때, 접근하려는 객체의 기본 생성자가 존재하지 않는다면, 접근할 수가 없다. 그러나 일반적으로 싱글톤 패턴은 객체의 기본 생성자 자체가 private이기 때문에 마찬가지로 객체 생성이 불가능하다. 때문에 factory-method속성을 추가하여 getInstance메서드를 따로 호출해줘야 한다. ◎ExamTest package test.exam02; public class ExamTest { private static ExamTest instance; private ExamTest() { } public static ExamTest getInstance() { if(instance == null) { instance = new ExamTest(); } re..
Spring DI 구성에서 사용하고자 하는 Dao 에 어떤 값을 전달하고자 하면, 등록한 bean 태그 내부에 constructor-arg 태그를 사용하여 전달할 수 있다. ◎ExamDao package test.exam01; public class ExamDao { private String msg; public ExamDao() { } public ExamDao(String msg) { this.msg = msg; } public void printMessage() { System.out.println("ExamDao의 msg 내용: " + msg); } } 이때, 위와 같이 기본 생성자가 무조건 있는 상태에서 setter개념의 생성자를 하나 더 만들어줘야 한다. ◎exam01.xml ◎ExamMai..
- react-native
- Async
- 파니노구스토
- 정보보안기사 #실기 #정리
- 인천 구월동 맛집
- 인천 구월동 이탈리안 맛집
- AsyncStorage
- react
- 이탈리안 레스토랑
- javascript
- redux
- redux-thunk
- Promise
- 맛집
- await
- Total
- Today
- Yesterday