자바: 91개의 글
@Autowired는 메소드 안에 사용할 수 없다. 클래스안에 객체로 사용해야 하며, 메소드 안에 사용시 아래와 같은 문제가 발생한다. 그럼 메소드 안이 Class 안에 객체 선언을 해보도록하자 진행시 아래와 같이 정상 실행되는 것을 확인할 수 있다. 출처 : namubada.net/90?category=777086
데이터베이스 연결시 DB Driver가 추가되어 있지 않으면 데이터를 DB에서 불러올 수 없다. 위와 같이 데이터 실행시 DB 연결이 안되어 있어 NullPointer 오류가 발생하게 된다. 문제의 해결은 pom.xml에서 database 추가 후 아래와 같이 문제를 해결할 수 있다. 출처 : namubada.net/80?category=777086
@Autowired 어노테이션의 경우 주로 변수 위에 설정하여 해당 타입의 객체를 찾아서 자동으로 할당한다. 그러므로 위의 private UserDAO userDAO의 경우 변수 선언만 했지 객체 할당을 하지않았다. 그러므로 위 상태에서 실행을 해버리면 userDAO의 메소드는 실행이 되어지지 않는다. 그러나 우리는 @Autowired 어노테이션으로 해당 변수위의 입력했기 때문에 해당 어노테이션이 해당 변수의 타입을 체크하고 그 타입의 객체가 메모리에 존재하는지 확인 후에 그 객체를 변수에 주입한다. 출처 : namubada.net/76?category=777086
위의 사진을 보면 BoardServiceClient의 BoardService boardService = (BoardService) container.getBean("boardService");에서 boardService를 호출하고있다. boardService는 applicationContext.xml에 있으며, 아래 사진에서 해당 코드의 내용을 확인할 수 있다. 그런데 특이한 점은 사진 어디에서도 boardService를 찾을 수 없다는 것이다. 그렇다면 어떻게 실행이 되는 것일까? 해당 부분의 해답은 아래 두 사진에서 확인할 수 있다. 실행되는 순서는 아래와 같다. 1. BoardServiceClient를 실행하면 2. applicationContext.xml에서 3. context:component-..
1. 개요 final 키워드를 떠올릴 때면 그냥 상수로만 생각할 때가 종종 있습니다. final을 클래스, 메서드, 변수에 선언하면 조금씩 할 수 있는 부분들이 제안됩니다. 너무 당연한 내용이지만, 시간이 지니니까 기억에서 사라져버려서 이번에 다시 한번 상기하기 위해 정리를 해보았습니다. 자바에서 final 키워드는 여러 컨텍스트에서 단 한 번만 할당될 수 있는 entity를 정의할 때 사용됩니다. (위키피니아) final 키워드는 총 3가지에 적용할 수 있습니다. 각각에 대해서 세부적으로 알아보죠. final 변수 원시 타입 객체 타입 클래스 필드 메서드 인자 final 메서드 final 클래스 2. Final 변수 2.1 원시 타입 로컬 원시 변수에 final로 선언하면 한번 초기화된 변수는 변경할 ..
행동패턴 목록 책임연쇄 패턴 (Chan of Responsibility Pattern) 커맨드 패턴 (Command Pattern) 해석자 패턴 (Interpreter Pattern) 반복자 패턴 (Iterator Pattern) 중재자 패턴 (Mediator Pattern) 메멘토 패턴 (Memento Pattern) 관찰자 패턴 (Observer Pattern) 상태 패턴 (State Pattern) 전략 패턴 (Strategy Pattern) 템플릿 패턴 (Template Pattern) 여기서 초점을 둘 부분은 final 로 만들어둔 변경 불가능한 프로세스 함수인 play() 이다. 고정되어있는 순서로 프로세스를 적용하려면 아래와 같이 final로 지정해 두는 것이 훨씬 효과적일 것 같다. 또한 ..
행동패턴 목록 책임연쇄 패턴 (Chan of Responsibility Pattern) 커맨드 패턴 (Command Pattern) 해석자 패턴 (Interpreter Pattern) 반복자 패턴 (Iterator Pattern) 중재자 패턴 (Mediator Pattern) 메멘토 패턴 (Memento Pattern) 관찰자 패턴 (Observer Pattern) 상태 패턴 (State Pattern) 전략 패턴 (Strategy Pattern) 템플릿 패턴 (Template Pattern) 클래스의 수를 상관하지 않고 단위기능의 처리를 테스트 할 때 쓰면 좋을 것 같기도 하다. 각 기능마다 레고블록처럼 갈아끼울 수 있기 때문에 초기에 사용하면 유용한 기능인 것 같다. 장점 - 서브클래싱 대신 사용할 ..
행동패턴 목록 책임연쇄 패턴 (Chan of Responsibility Pattern) 커맨드 패턴 (Command Pattern) 해석자 패턴 (Interpreter Pattern) 반복자 패턴 (Iterator Pattern) 중재자 패턴 (Mediator Pattern) 메멘토 패턴 (Memento Pattern) 관찰자 패턴 (Observer Pattern) 상태 패턴 (State Pattern) 전략 패턴 (Strategy Pattern) 템플릿 패턴 (Template Pattern) 객체의 동작이 상태에 따라 변하는 경우에 사용한다. 옵저버패턴과의 차이를 생각해보고 적재적소에 사용해야 할 것 같다. 관찰자 패턴은 상태가 변경시에 그때그때 알려주는 패턴이고 상태패턴은 상태에 따라 처리를 다르게 ..
행동패턴 목록 책임연쇄 패턴 (Chan of Responsibility Pattern) 커맨드 패턴 (Command Pattern) 해석자 패턴 (Interpreter Pattern) 반복자 패턴 (Iterator Pattern) 중재자 패턴 (Mediator Pattern) 메멘토 패턴 (Memento Pattern) 관찰자 패턴 (Observer Pattern) 상태 패턴 (State Pattern) 전략 패턴 (Strategy Pattern) 템플릿 패턴 (Template Pattern) 어떤 객체의 상태가 변함에 따라 원하는 동작을 할 필요가 있는 경우에 사용하면 좋을 것 같다. 장점 - 객체와 관찰자 간의 연결을 설명합니다. - 브로드 캐스트 유형 통신을 지원합니다. 사용시기 - 한 객체의 상태..
행동패턴 목록 책임연쇄 패턴 (Chan of Responsibility Pattern) 커맨드 패턴 (Command Pattern) 해석자 패턴 (Interpreter Pattern) 반복자 패턴 (Iterator Pattern) 중재자 패턴 (Mediator Pattern) 메멘토 패턴 (Memento Pattern) 관찰자 패턴 (Observer Pattern) 상태 패턴 (State Pattern) 전략 패턴 (Strategy Pattern) 템플릿 패턴 (Template Pattern) 상태를 저장하고 복원하는 기능이 필요한 경우에 사용하면 유용할 듯 하다. 장점 - 캡슐화 경계를 유지합니다. - 발신자를 단순화합니다. 사용시기 - 실행 취소 작업을 구현하는데에 쓰입니다. - 대부분의 소프트웨어에..