728x90

@Resource @Autowired @Inject 의 공통점은 의존 주입 이다.

또한 특정 Bean 기능을 수행하기 위해 기능에 필요한 특정 Bean을 참조 해야 하는 경우가 많이 발생한다

그럴때 사용하는것이 @Resource @Autowired @Inject 의 어노테이션이다

그럼 이 어노테이션의 차이점과 사용법을 알아보도록 하자.

 

 

@Resource

@Autowired

@Inject

설명

Java 에서 지원하는 어노테이션

Spring Framework 에서 지원하는 Dependency 정의 용도의 어노테이션 자동주입이며 종속적이다

Java 에서 지원하는 어노테이션

사용하는 위치

필드 , 한개의 파라미터인 빈 프로퍼티 setter 메소드

필드 , 생성자 , 여러개인 파라미터 메소드

필드 , 생성자 , 메소드

연결 또는 검색 방식

이름으로 연결 안되면 타입

타입으로 연결 안되면 이름

타입으로 연결 안되면 이름

특이사항

 

스프링프레임워크 종속적이다

 

강제 연결 하기

@Resource(name="title")

@Qualifier("title")

 

 

 

간단한 설명은 이렇게 자세한 설명을 이어가겠다.

 

@Resource

name 으로 DI 를 가능케한다. 자바에서 지원하는 어노테이션 이며 프레임워크에 종속적이지 않아 많이 사용한다. 이걸 추천한다.

다 똑같지만 필요로 하는 자원을 쓰기 위해 어노테이션을 추가해 DI를 한다.

Bean을 생성해주며 싱글톤 패턴이 자동으로 적용이 된다고 생각하면 된다.

 

@Autowired

type으로 DI 를 가능케한다. 스프링 프레임워크에서 지원 하는 어노테이션이면 프레임워크에 종속적이다.

그래서 추천하지는 않는다 왜냐하면 스프링 프레임워크를 쓰다 다른 프레임워크로 수정할 경우에 많은 리소스가 발생한다

다 바꿔줘야하는 부분이... 양이 방대하다면 답이 없고

그래서 나는 Resource를 추천한다 어느 프레임워크에 종속적이지 않기 때문에

이것또한 Bean를 생성하며 싱글톤 패턴이 자동으로 적용이 된다. 타입으로 연결 하기 때문에 같은 타입인 여러개의 필드는 오류가 날것이다

강제 연결 할경우에는 @Qualifier를 사용하면 된다 네임을 붙혀서

 

@Inject

name으로 DI를 가능케한다. 자바에서 지원하는 어노테이션 이며 프레임 워크에 종속적이지 않아 사용해도 좋다

이것은 @Resource 랑 다를게 없지만 다른점이라하면 자바에서 지원하는건데 타입으로 연결한다는 점이다

Autowired 를 사용할거라면 차라리 Inject를 사용하는 걸 추천하는 편이기는 한다

다만 오토와이어는 확실한 의존성이 보장이 되기때문에 이거는 어느걸 추천한다고는 확실히 답변 못주겠다.

알아서 리소스와 코드의 맞게 써라

728x90

'프로그래밍 > java' 카테고리의 다른 글

롬복 설치  (0) 2022.05.19
SVN 락 풀기  (0) 2020.03.12
인터넷이 끊겼을 때 spring xsd 관려  (0) 2020.01.14
String, StringBuffer, StringBuilder의 장단점 및 차이점  (0) 2019.10.11
poi cell Number 포맷 문자로 읽기  (0) 2016.11.04
728x90

♠ '빌게이츠'가 말한 뜨끔한 명언 ♠ 
 
태어나서 가난한 건,
당신의 잘못이 아니지만
죽을때도 가난한 건 당신의 잘못이다. 
 
화목하지 않은 가정에서
태어난건, 죄가 아니지만
당신의 가정이 화목하지 않은건
당신의 잘못이다. 
 
실수는 누구나 한번쯤
아니 여러번 수백 수천번 할 수 있다
그러나 같은 실수를 반복하면
그건 못난 사람이다. 
 
인생은 등산과도 같다
정상에 올라서야만
산아래 아름다운 풍경이 보이듯
노력 없이는 정상에 이를 수 없다. 
 
때론 노력해도 안되는게 있다지만
노력조차 안 해보고 정상에 오를 수 없다고
말하는 사람은 폐인이다. 
 
가는말을 곱게 했다고
오는 말도 곱기를 바라지 말라. 
 
다른사람이 나를
이해 해주길 바라지도 말라.
항상 먼저 다가가고
먼저 배려 하고 먼저 이해하라. 
 
주는만큼 받아야 된다고 생각지 말라.
아낌없이 주는 나무가 되라. 
 
시작도 하기 전에 결과를 생각하지 말라.
다른 사람이 나를 어떻게 보는지 생각말라.
다른사람을 평가하지도 말라. 
 
눈에는 눈 이에는 이
갚을 땐 갚고 받을 땐 받아라. 
 
모든 걸 내가 아니면
할 수 없다는 생각은 버려라. 
 
나 없인 못산다는 생각 또한 버려라
내가 사라져도, 이세상은 잘 돌아 간다. 
 

728x90
728x90

바라보지 않아도 열려 있는 

바라보아도 열려 있는

사랑하거나 하지 않거나 열려 있는 창

728x90

'에세이' 카테고리의 다른 글

약속  (0) 2019.09.17
별이 아스라이 떨어지면  (0) 2016.04.10
봄비  (0) 2016.04.07
공백  (0) 2016.04.06
삭제  (0) 2016.04.06
728x90

형상관리 프로그램 SVN을 사용하다 보면...

lock 걸려서 update도 안되고 commit 도 안되고...

그래서 cleanup을 해서 풀려고 해도 안되고...

 

참으로 짜증날 때가 있다.

 

lock 이 걸리는 부분에 대해서 아직도 정확히 어느시점에 왜?! 걸리는지 모르겠다는...

update 받고 commit 하는데 갑자기 lock 걸려버림...

내가 무슨잘못을 한건지....

 

찾아보면 다들 cleanup 시키라는데

해봤자 lock 이 걸려서 cleanup 자체가 되지 않음

 

 

이래 될때 마다 매번 새로 받을 수도 없는 노릇이고 해서 SVN db를 까봄

 

.svn 폴더를 들어가보면 wc.db 파일이 존재함.

요녀석을 sqlite3 으로 열어봄

 

 

SQLite Browser 다운로드 링크

http://sqlitebrowser.org/

DB Browser for SQLite

News 2016-12-17 - The v3.9.1 binary for OSX has been rebuilt using Qt 5.7.1, to fix an important colour display problem on macOS Sierra. 2016-12-15 - An initial DBHub.io server is online , running our latest development code. Testing and feedback is encouraged . Note - The data on this server will p...

sqlitebrowser.org

 

wc.db 내부 테이블 중에

WC_LOCK, WORK_QUEUE 테이블이 존재함.

 

물론 SVN이 이상없을 시에는 이곳에 데이터가 쌓여있지 않음.

LOCK이 걸려서 이러지도 저러지도 못할때 조회해보면 그 해당 에러났던 파일들이 들어있음.

 

과감하게

DELETE FROM WC_LOCK

DELETE FROM WORK_QUEUE

 

SQL 실행 후 변경사항을 저장시키고 LOCK 걸린곳에서 cleanup을 한 후

update 실행하면 lock이 해제되어 있는것을 볼 수 있다.

728x90
728x90

1. 리눅스 파일명으로 검색하는법.

 

사용법

find [찾을위치] -name [파일명]

 

예) 최상위 폴더부터 하위로 'apache'로 시작하는 파일 찾기.

find / -name 'apache*'

 

예) usr 폴더부터 하위로 'apa'로 시작하는 파일 찾기.

find /usr/ -name 'apa*'

 

 

2. 리눅스 파일 내부 문자열 검색하는법.

 

grep 을 이럴때 유용하게 쓸 수 있습니다.

 

사용법

grep -r [찾을 문자열] [대상파일들]

 

예) 현재 폴더에 있는 test.log 파일내부에 'apache' 라는 문자열 찾기.

grep -r 'apache' ./test.log

 

예) 'var' 폴더부터 하위 모든 파일내부에서 'apache' 라는 문자열 찾기.

grep -r 'apache' /var/* [--include '*.conf'] (include 옵션으로 특정 확장자에서만 검색도 가능하다)

 

 

3. 파일 내부 문자열 검색 다른 방법 (Feat. 강조색)

 

find . -type f -print | xargs grep -i "phpMyAdmin" /dev/null

현재위치부터 하위폴더의 모든 파일중에서 'phpMyAdmin' 이라는 문자열을 검색한다.

 

find . -name '*.conf' | xargs grep -r --color=auto -n 2>dev/null 'phpMyAdmin'

현재 부터 하위 모두를 검색하되,

conf 라는 확장자를 가진 파일중에서 'phpMyAdmin' 이라는 문자열을 검색한다.

그리고 일치 문자열은 강조색으로 표시!

 

 

이상으로 리눅스 파일명으로 찾기, 파일속 문자열 검색까지 알아보았습니다.

728x90

'프로그래밍 > 리눅스' 카테고리의 다른 글

리눅스 특정 폴더 용량 확인하기  (0) 2022.07.27
도커 개념 정리  (0) 2022.05.24
특정 IP만 ssh 접속 허용하기  (0) 2019.05.21
GREP 활용  (0) 2019.04.24
리눅스 파티션 관리  (0) 2016.01.14
728x90
$(document).ready(function(){
  // code
});

-> 브라우저에서 DOM 트리를 생성하고난 후에 실행되게 되는 코드입니다.(DOM is ready)

$(window).load(function(){
  // code
}); 

-> 모든 include 되는 프레임들과 object들, 이미지까지 로드된 이후에 실행됩니다.

출처: https://creator1022.tistory.com/156 [우물안에만 살지말자]
728x90

'프로그래밍 > 자바스크립트' 카테고리의 다른 글

jqGrid 이벤트 설명  (0) 2022.08.09
jQuery 선택자 정리  (0) 2022.07.19
jquery 화면 상단으로 이동  (0) 2019.12.19
자바스크립트 event.keyCode  (0) 2016.04.26
jQuery selectBox 제어  (0) 2016.04.14
728x90

문제 상황

인터넷이 연결되어 있을때는 정상이지만 연결되어 있지 않으면 톰캣 실행시 아래와 같은 에러 발생.

참고로 웹소켓을 연동한 프로젝트였다.

 

org.xml.sax.SAXParseException; lineNumber: 95; columnNumber: 84; schema_reference.4: 스키마 문서 'http://www.springframework.org/schema/util/spring-util-3.2.xsd' 읽기를 실패했습니다. 원인: 1) 문서를 찾을 수 없습니다. 2) 문서를 읽을 수 없습니다. 3) 문서의 루트 요소가 가 아닙니다.

 

Caused by: java.net.UnknownHostException: www.springframework.org

 

2014-09-04 10:34:22,195 [localhost-startStop-1] ERROR [org.springframework.web.servlet.DispatcherServlet] Context initialization failed

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 95 in XML document from class path resource [spring/spring.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 95; columnNumber: 84; cvc-complex-type.2.4.c: 일치하는 와일드 카드 문자가 엄격하게 적용되지만 'util:properties' 요소에 대한 선언을 찾을 수 없습니다.

문제 원인

스프링 설정 파일에서 xsd 파일 버전이 맞지 않아 발생하는 문제였다.

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:websocket="http://www.springframework.org/schema/websocket"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
			http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
			http://www.springframework.org/schema/websocket
			http://www.springframework.org/schema/websocket/spring-websocket-4.2.xsd">

웹소켓을 연동하기 위해 spring 4.2.1 release jar를 프로젝트에 포함시킨 것은 제대로 했으나 spring 설정 파일에서 xsd를 읽어올 때는 4.2.xsd 파일을 참조하도록 하였다. 이 둘의 버전이 맞지 않기 때문에 서버 구동시 프로젝트에 포함된 jar 가지고는 xsd를 읽을 수 없어 자동으로 인터넷에서 4.2 버전의 xsd 파일을 찾는 것 같다. 

 

이를 해결하기 위해서는,

1.프로젝트에 포함된 jar와 spring 설정 파일의 xsd 버전을 똑같이 맞춰주든지

2.그냥 설정 파일의 버전을 없애고 빌드하면 된다

문제 해결

Spring 설정 파일의 xsd 버전을 삭제했다. 

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:websocket="http://www.springframework.org/schema/websocket"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
			http://www.springframework.org/schema/beans/spring-beans.xsd
			http://www.springframework.org/schema/websocket
			http://www.springframework.org/schema/websocket/spring-websocket.xsd">

참고 사이트

schema_reference.4: Failed to read schema document 'http://www.springframework.org/schema/beans/spring- beans-4.1.5.xsd - stackoverflow

Spring schemaLocation fails when there is no internet connection - stackoverflow

인터넷에 연결 안되면 Spring Framework 에러 발생. - 민서네집 티스토리 블로그



출처: https://insomniachaos.tistory.com/161 [DEV_NOTE]

728x90
728x90
function scrollToTop() {
    $('html, body').animate({scrollTop: 0 }, 'slow');
}

<a onclick="scrollToTop()"></a>

출처: https://seongilman.tistory.com/301 [SEONG]
728x90

+ Recent posts