[SPRING] Java SE + Spring 데이터 + 최대 절전 모드
SPRINGJava SE + Spring 데이터 + 최대 절전 모드
Spring Data + Hibernate로 Java SE 응용 프로그램을 시작하려고 노력 중이며 지금까지는 다음과 같은 작업을 수행했습니다.
구성 파일
@Configuration
@PropertySource("classpath:hibernate.properties")
@EnableJpaRepositories
@EnableTransactionManagement
public class JpaConfiguration {
private static final String PROPERTY_NAME_DATABASE_DRIVER = "db.driver";
private static final String PROPERTY_NAME_DATABASE_PASSWORD = "db.password";
private static final String PROPERTY_NAME_DATABASE_URL = "db.url";
private static final String PROPERTY_NAME_DATABASE_USERNAME = "db.username";
private static final String PROPERTY_NAME_HIBERNATE_DIALECT = "hibernate.dialect";
private static final String PROPERTY_NAME_HIBERNATE_SHOW_SQL = "hibernate.show_sql";
private static final String PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN =
"entitymanager.packages.to.scan";
@Resource
private Environment env;
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(
env.getRequiredProperty(PROPERTY_NAME_DATABASE_DRIVER));
dataSource.setUrl(env.getRequiredProperty(PROPERTY_NAME_DATABASE_URL));
dataSource.setUsername(env.getRequiredProperty(PROPERTY_NAME_DATABASE_USERNAME));
dataSource.setPassword(env.getRequiredProperty(PROPERTY_NAME_DATABASE_PASSWORD));
return dataSource;
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new
LocalContainerEntityManagerFactoryBean();
entityManagerFactoryBean.setDataSource(dataSource());
entityManagerFactoryBean.setPersistenceProviderClass(org.hibernate
.jpa.HibernatePersistenceProvider.class);
entityManagerFactoryBean.setPackagesToScan(env.
getRequiredProperty(PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN));
entityManagerFactoryBean.setJpaProperties(hibProperties());
return entityManagerFactoryBean;
}
private Properties hibProperties() {
Properties properties = new Properties();
properties.put(PROPERTY_NAME_HIBERNATE_DIALECT,
env.getRequiredProperty(PROPERTY_NAME_HIBERNATE_DIALECT));
properties.put(PROPERTY_NAME_HIBERNATE_SHOW_SQL,
env.getRequiredProperty(PROPERTY_NAME_HIBERNATE_SHOW_SQL));
return properties;
}
@Bean
public JpaTransactionManager transactionManager() {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());
return transactionManager;
}
@Bean
public MainBean mainBean() {
return new MainBean();
}
}
수업 시작
public class Start {
private static final String CONFIG_PACKAGE = "org.app.config";
public static void main(String[] args) {
try (AnnotationConfigApplicationContext ctx = new
AnnotationConfigApplicationContext()) {
ctx.scan(CONFIG_PACKAGE);
ctx.refresh();
MainBean bean = ctx.getBean(MainBean.class);
bean.start();
}
}
}
주된 콩
public class MainBean {
public void start() {
System.out.println("Application Started. . .");
}
}
그러나 다음과 같은 예외가 발생합니다.
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [C:\MyPath\target\classes\org\app\config\JpaConfiguration.class]; nested exception is java.lang.IllegalArgumentException
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:281)
at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:242)
at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.scan(ClassPathBeanDefinitionScanner.java:220)
at org.springframework.context.annotation.AnnotationConfigApplicationContext.scan(AnnotationConfigApplicationContext.java:153)
at org.app.Start.main(Start.java:25)
Caused by: java.lang.IllegalArgumentException
at org.springframework.asm.ClassReader.<init>(Unknown Source)
at org.springframework.asm.ClassReader.<init>(Unknown Source)
at org.springframework.asm.ClassReader.<init>(Unknown Source)
at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:52)
at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)
at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:101)
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:257)
... 4 more
누구나 내가 뭘 잘못하고 있는지 알 겠어?
해결법
-
==============================
1.여러분이 보게되는 예외는 유효하지 않은 Spring 설정이지만 클래스 패스 설정에 의한 것 같지는 않다. 이것은 ASM 라이브러리와 Java 8에 관한 버전 비 호환성과 같은 느낌입니다. ASM 버전 인 Spring 3.2는 Java 8과 호환되지 않는 것으로 알려져 있습니다.
여러분이 보게되는 예외는 유효하지 않은 Spring 설정이지만 클래스 패스 설정에 의한 것 같지는 않다. 이것은 ASM 라이브러리와 Java 8에 관한 버전 비 호환성과 같은 느낌입니다. ASM 버전 인 Spring 3.2는 Java 8과 호환되지 않는 것으로 알려져 있습니다.
따라서 Java 8로 코드를 실행하려면 최신 버전의 Spring 4.0을 사용해야합니다.
-
==============================
2.나는 또한 Spring-3.2.0과 Java 8 (jdk1.8.0_60)에서 같은 문제에 직면했다. 스프링 프레임 워크의 3.2.14 릴리스를 사용한 후 작동합니다.
나는 또한 Spring-3.2.0과 Java 8 (jdk1.8.0_60)에서 같은 문제에 직면했다. 스프링 프레임 워크의 3.2.14 릴리스를 사용한 후 작동합니다.
from https://stackoverflow.com/questions/22730801/java-se-spring-data-hibernate by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring-MongoDb 집계 프레임 워크에서 $ cond 연산을 사용하는 방법 (0) | 2018.12.13 |
---|---|
[SPRING] Mongodb 중첩 된 배열 내부의 값 증가 (0) | 2018.12.13 |
[SPRING] Spring MVC로 JSP에 js와 CSS를 포함시키는 법 (0) | 2018.12.12 |
[SPRING] java.lang.NoSuchMethodError : org.hibernate.SessionFactory.openSession () Lorg / hibernate / classic / Session (0) | 2018.12.12 |
[SPRING] 다중 소스에서 읽은 일괄 작업 일괄 처리 (0) | 2018.12.12 |