암호화 복호화 관련 질문 드립니다.
- 작성자 :
- 이*필
- 작성일 :
- 2014-11-24 13:22:12
- 조회수 :
- 1,257
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
test에서 사용한 소스는 아래와 같습니다.
byte[] encrypted = cryptoService.encrypt(str.getBytes("UTF-8"), password);
이 코드에서
cryptoService가 null이어서 java.lang.NullPointerException 이 발생합니다.
public class CryptoTest {
@Resource(name="ARIACryptoService")
EgovCryptoService cryptoService;
private final static String password = "egovframe";
@Test
public void testString() {
String[] testString = {
"This is a testing...\nHello!",
"한글 테스트입니다...",
"!@#$%^&*()_+|~{}:\"<>?-=\\`[];',./"
};
try {
for (String str : testString) {
System.out.println(String.format("[%s] %s : %s", str, password, str.getBytes("UTF-8")));
byte[] encrypted = cryptoService.encrypt(str.getBytes("UTF-8"), password);
byte[] decrypted = cryptoService.decrypt(encrypted, password);
assertEquals(str, new String(decrypted, "UTF-8"));
System.out.println(String.format("[%s][%s]", str, new String(decrypted, "UTF-8")));
System.out.println(String.format("[%s]", str));
}
} catch (Exception uee) {
uee.printStackTrace();
fail();
}
}
}
왜 java.lang.NullPointerException이 발생하는 건가요?
byte[] encrypted = cryptoService.encrypt(str.getBytes("UTF-8"), password);
이 코드에서
cryptoService가 null이어서 java.lang.NullPointerException 이 발생합니다.
public class CryptoTest {
@Resource(name="ARIACryptoService")
EgovCryptoService cryptoService;
private final static String password = "egovframe";
@Test
public void testString() {
String[] testString = {
"This is a testing...\nHello!",
"한글 테스트입니다...",
"!@#$%^&*()_+|~{}:\"<>?-=\\`[];',./"
};
try {
for (String str : testString) {
System.out.println(String.format("[%s] %s : %s", str, password, str.getBytes("UTF-8")));
byte[] encrypted = cryptoService.encrypt(str.getBytes("UTF-8"), password);
byte[] decrypted = cryptoService.decrypt(encrypted, password);
assertEquals(str, new String(decrypted, "UTF-8"));
System.out.println(String.format("[%s][%s]", str, new String(decrypted, "UTF-8")));
System.out.println(String.format("[%s]", str));
}
} catch (Exception uee) {
uee.printStackTrace();
fail();
}
}
}
왜 java.lang.NullPointerException이 발생하는 건가요?
A
안녕하세요. 이종필님.
CryptoTest 클래스 자체가 Spring container가 관리하는 bean이 아니기 때문에 @Resource와 같은 Dependency Injection을 처리하지 못합니다. 그래서 cryptoService 자체가 null입니다.
CryptoTest의 가 테스트 케이스이신 경우라면 CryptoTest 클래스에 다음과 같은 Annotation을 통해 테스트가 가능합니다.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
"classpath*:META-INF/spring/context-common.xml",
"classpath*:META-INF/spring/context-datasource-jdbc.xml"
})
public class CryptoTest {
locations 부분은 사용하실 xml 설정을 지정하시면 됩니다.
그럼, 즐거운 하루되십시오.
감사합니다.
CryptoTest 클래스 자체가 Spring container가 관리하는 bean이 아니기 때문에 @Resource와 같은 Dependency Injection을 처리하지 못합니다. 그래서 cryptoService 자체가 null입니다.
CryptoTest의 가 테스트 케이스이신 경우라면 CryptoTest 클래스에 다음과 같은 Annotation을 통해 테스트가 가능합니다.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
"classpath*:META-INF/spring/context-common.xml",
"classpath*:META-INF/spring/context-datasource-jdbc.xml"
})
public class CryptoTest {
locations 부분은 사용하실 xml 설정을 지정하시면 됩니다.
그럼, 즐거운 하루되십시오.
감사합니다.