개발서적/토비 스프링 3.1-Vol.1

    [토비의 스프링 - Vol.1]7.6.2 빈 스캐닝과 자동와이어링 실습 중 에러 java.lang.IllegalStateException: Failed to load ApplicationContext

    [ p.676 ] xml로 설정했던 부분을 자바로 변경을 한 후 TestApplicationContext.java에서 설정한 것을 리팩토링 하는 작업 중에 에러가 발생했다. @Configuration @EnableTransactionManagement public class TestApplicationContext { .... @Bean public UserDao userDao(){ return new UserDaoJdbc(); } .... } 위에 코드로 실행할 때는 테스트 코드가 정상적으로 작동했다. 하지만 아래처럼 코드를 변경하니 에러가 발생... @Configuration @EnableTransactionManagement @ComponentScan(basePackages = "user") pub..

    [토비의 스프링 - Vol.1]7.5.2 내장형 데이터베이스 - 2

    스프링에서는 내장형 데이버베이스를 지원한다. 자바에서는 Derby, HSQL, H2가 대표적인 내장 데이터베이스이다. 내장형데이터베이스란? 인메모리 데이터베이스(In-memory Database)는 데이터 스토리지의 메인 메모리에 설치되어 운영되는 방식의 데이터베이스 관리 시스템 인메모리 데이터베이스는 디스크에 최적화된 데이터베이스보다 더 빠른데 그 까닭은 디스크 접근이 메모리 접근보다 느리기 때문이며, 이 데이터베이스는 내부 최적화 알고리즘이 더 단순하며 더 적은 CPU 명령을 실행한다. 메모리의 데이터에 접근하면 데이터를 조회할 때 검색 시간이 줄어들며 디스크보다 더 빠르고 더 예측 가능성 성능을 제공한다. 출처: https://ko.wikipedia.org/wiki/%EC%9D%B8%EB%A9%94..

    [토비의 스프링 - Vol.1]7.5.2 내장형 데이터베이스

    public class EmbeddedDbTest { EmbeddedDatabase db; JdbcTemplate template; @BeforeEach public void setUp(){ db = new EmbeddedDatabaseBuilder() .setType(HSQL) .addScript("classpath:/embeddeddb/schema.sql") .addScript("classpath:/embeddeddb/data.sql") .build(); template = new JdbcTemplate(db); } @AfterEach public void tearDown(){ db.shutdown(); } @Test public void initData(){ assertEquals(template...

    [토비의 스프링 - Vol.1] 내가 몰랐던 용어 정리

    1. OXM(Object-XML-Mapping): XML과 자바오브젝트를 매핑해서 상호 변환해주는 기술 - 대표적인 기술들 Castor XML : 설정파일이 필요 없는 인트로스펙션 모드를 지원하고 매우 간결하고 가벼운 바인딩 프레임워크 JiBX: 뛰어난 포퍼먼스를 자랑하는 XML바인딩 기술 XmlBeans: 아파치 XML 프로젝트의 하나, XML 정보셋을 효과적으로 제공 Xstream: 관례를 이용해서 설정이 없는 바인딩을 지원하는 XML바인딩 기술 JAXB: JavaSE와 JavaEE 표준에 포함된 기술 2. 인트로스펙션(Introspection): 인트로스펙션(Introspection) 은 자바의 리플렉션(Reflection) 과 같이 객체의 메타데이터(객체의 클래스, 구현 메소드, 프로퍼티, 프로토..

    [토비의 스프링 - Vol.1]7장 XML SQL 서비스 실습(리스트7-19)

    리스트 7-19 생성자 초기호 ㅏ방법을 사용하는 XmlSqlService 클래스 실습을 하는 중 public class XmlSqlService implements SqlService{ ... public void read(SqlRegistry sqlRegistry) { String contextPath = Sqlmap.class.getPackage().getName(); try { JAXBContext context = JAXBContext.newInstance(contextPath); Unmarshaller unmarshaller = context.createUnmarshaller(); InputStream is = UserDao.class.getResourceAsStream("sqlmap.xml")..

    [토비의 스프링 - Vol.1]7.2.1 xml 파일 매핑 - JAXB 관련 실습 중 나온 현상

    JAXB를 사용하여 매핑하는 실습을 진행중 나온 헤맨 상황 1. 아래의 코드를 입력 2. 셀이나 도스창에서 프로젝트 루트 폴더로 이동 후 아래의 명령어를 입력 xjc -springbook.user.sqlservice.jaxb sqlmap.xsd -d src 2번 작업을 하는중 xjc를 찾지 못하면서 진행이 되지 않았음 이유를 찾아보니 1. java -version 으로 치면 jdk 1.8을 보여주고 javac -version 으로 치면 jdk 12를 보여주고 있었음 -> 환경변수를 가보니 JAVA_HOME이 jdk 12로 되어 있어서 jdk1.8로 변경했음 -> xjc는 jdk 12에서는 지원이 되지 않는걸로 보였음 2. 설정 후 다시 명령어를 쳤으나 src파일을 찾을 수 없다는 내용을 보여주며 안됌 -..

    [토비의 스프링 - Vol.1] @Transactional

    1. 대체 정책 - 모든 번호에 @Transactional 어노테이션을 사용할 수 있음 - 타깃 오브젝트 메소드인 [5], [6]이 첫번째 후보 - 타깃 클래스인 [4]이 두번째 후보 - 인터페이스 메소드인 [2], [3]이 세번째 후보 - 인터페이스인 [1]이 네번째 후보 - 세밀한 정책을 이용하고 싶을때는 타깃클래스와 메소드에 걸어두는게 좋음 - 여러 클래스에 한번에 적용하고 싶을때는 인터페이스를 이용하면 효율적임 [1] public interface Service{ [2] void method1(); [3] void method2(); } [4] public class ServiceImpl implements Service { [5] public void method1(){ } [6] public ..

    [토비의 스프링 - Vol.1] xml 트랜잭션 설정 방법

    기본적으로 필요한 정보 (dataSource, transactionManager 필요) 1. bean으로 설정하는 방법 PROPAGATION_REQUIRED,readOnly PROPAGATION_REQUIRED 2. tx와 aop태그를 이용하는 방법 (*beans 태그에 tx, aop관련 설정이 있어야한다) ....