【问题标题】:Spring's Java Based configuration not working for meSpring 的基于 Java 的配置对我不起作用
【发布时间】:2011-11-04 15:50:25
【问题描述】:

我是 Spring 编程的新手,目前正在努力使用 Spring 3.1 的基于 Java 的配置”我创建了以下配置类

@Configuration
@ImportResource("classpath:/resources/jdbc.properties")
public class AppConfig {

    @Autowired
    Environment env;
    private @Value("${jdbc.url}")
    String url;
    private @Value("${jdbc.username}")
    String username;
    private @Value("${jdbc.password}")
    String password;

    @Bean
    public DataSource dataSource() {
        System.out.println("Creating data Source.");
        return new DriverManagerDataSource(url, username, password);
    }

    @Bean
    public SessionFactory sessionFactory () throws Exception {
        return new AnnotationSessionFactoryBuilder().setDataSource(dataSource()).setPackagesToScan("com.argusoft.loginmodule.domain").buildSessionFactory();
    }
}

现在当我尝试运行该项目时,出现以下错误。

输出

严重:加载应用程序时出现异常: java.lang.IllegalStateException:ContainerBase.addChild:开始: org.apache.catalina.LifecycleException: java.lang.IllegalArgumentException:javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/springframework/core/env/EnvironmentCapable

陷入困境,无法解决......我关注Spring Source Blog

还请推荐一些好的教程,其中通过易于理解的示例解释 Spring 最新的基于 Java 的配置...

提前致谢,

【问题讨论】:

    标签: spring jakarta-ee netbeans glassfish


    【解决方案1】:

    从异常的角度来看:

    java.lang.NoClassDefFoundError: org/springframework/core/env/EnvironmentCapable
    

    这个问题等于问题:Spring class EnvironmentCapable

    所以正确的答案可能是:

    我认为需要使用版本 3.1.0 - 在包中 org.springframework.core-3.1.0.M2.jar 这个类呈现。

    此处由 user810430 提供:original answer

    【讨论】:

    • 鉴于 OP 提到了 Spring 3.1,对上一个问题的引用不是答案。
    【解决方案2】:
    you can puth configuration like this
    inside application context:
        <bean id="propertyConfigurer"
            class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="locations">
                <list>
                    <value>/WEB-INF/configuration.properties</value>
                </list>
            </property>
        </bean>
    
    <import resource="db-config.xml" />
    
    and   
    db-config.xml is:
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
            destroy-method="close">
    
            <property name="driverClass">
                <value>${jdbc.driver.className}</value>
            </property>
            <property name="jdbcUrl">
                <value>${jdbc.url}</value>
            </property>
            <property name="user">
                <value>${jdbc.username}</value>
            </property>
            <property name="password">
                <value>${jdbc.password}</value>
            </property>
        </bean>
        <bean id="sessionFactory"
            class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" autowire="byName">
            <property name="dataSource">
            <ref bean="dataSource" />
            </property>
            <property name="packagesToScan" value="com.huawei.sa.album" />
            <property name="hibernateProperties">
                     <props>
                                    <prop key="hibernate.dialect">${jdbc.hibernate.dialect}</prop>
                    <prop key="hibernate.hbm2ddl.auto">update</prop>
                    <!-- uncomment this for first time run-->
                    <prop key="hibernate.show_sql">false</prop>
                </props>
            </property>
    
        </bean>
    
    
        <bean id="transactionManager"
            class="org.springframework.orm.hibernate3.HibernateTransactionManager">
            <property name="sessionFactory">
                <ref bean="sessionFactory" />
            </property>
        </bean>
    
           <tx:annotation-driven />
    
    </beans>
    

    【讨论】:

    • 配置属性:jdbc.driver.className=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/albumserver jdbc.username=root jdbc.password=1234 jdbc .hibernate.dialect=org.hibernate.dialect.MySQLDialect
    • 非常感谢您的快速帮助....但我需要仅使用注释来完成...请建议我仅使用 Spring 的最新注释来执行此操作....
    猜你喜欢
    • 2019-09-27
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多