Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PersistenceAnnotationBeanPostProcessor对环境或@PropertySource是否有影响?_Java_Spring_Spring Mvc_Jpa - Fatal编程技术网

Java PersistenceAnnotationBeanPostProcessor对环境或@PropertySource是否有影响?

Java PersistenceAnnotationBeanPostProcessor对环境或@PropertySource是否有影响?,java,spring,spring-mvc,jpa,Java,Spring,Spring Mvc,Jpa,大家好,我是Spring和Jpa集成的初学者。当我尝试配置数据库连接时,详细信息处理程序itp。我遇到了春天的一个奇怪现象 首先,我有3个配置文件: 1) RootConfig-包含除控制器以外的所有内容 2) WebConfig-包含控制器注释的每个Bean 3) JdbcConfig-包含与数据源相关的bean,此配置由RootConfig使用此注释导入(@Import(JdbcConfig.class)) RootConfig如下所示: @Configuration @Import(Jdb

大家好,我是Spring和Jpa集成的初学者。当我尝试配置数据库连接时,详细信息处理程序itp。我遇到了春天的一个奇怪现象

首先,我有3个配置文件:

1) RootConfig-包含除控制器以外的所有内容

2) WebConfig-包含控制器注释的每个Bean

3) JdbcConfig-包含与数据源相关的bean,此配置由RootConfig使用此注释导入(
@Import(JdbcConfig.class)

RootConfig如下所示:

@Configuration
@Import(JdbcConfig.class)
@ComponentScan(basePackages = "app", excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,value = {EnableWebMvc.class, Controller.class})})
public class RootConfig
{

}
JdbcConfig:

@Configuration
@PropertySource("classpath:db.properties")
@EnableTransactionManagement
public class JdbcConfig
{

    @Resource
    public Environment env;


    @Bean
    public DataSource dataSource()
    {
        System.out.println(env);
        DriverManagerDataSource ds = new DriverManagerDataSource();
        ds.setDriverClassName(env.getProperty("dataSource.driverClassName"));
        ds.setUrl(env.getProperty("dataSource.Url"));
        ds.setUsername(env.getProperty("dataSource.username"));
        ds.setPassword(env.getProperty("dataSource.password"));
        return ds;

    }



    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean(DataSource ds, JpaVendorAdapter jpaVendorAdapter)
    {
        LocalContainerEntityManagerFactoryBean emfb = new LocalContainerEntityManagerFactoryBean();
        emfb.setDataSource(ds);
        emfb.setJpaVendorAdapter(jpaVendorAdapter);
        emfb.setPackagesToScan("app.model");
        return emfb;
    }

    @Bean
    public JpaVendorAdapter jpaVendorAdapter()
    {
        HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter();
        adapter.setDatabase(Database.POSTGRESQL);
        adapter.setShowSql(true);
        adapter.setGenerateDdl(true);
        adapter.setDatabasePlatform(env.getProperty("dataSource.dialect"));

        return adapter;
    }



    @Bean
    public BeanPostProcessor beanPostProcessor()
    {
        return new PersistenceExceptionTranslationPostProcessor();
    }


    @Bean
    public JpaTransactionManager jpaTransactionManager(EntityManagerFactory em) {
        return new JpaTransactionManager(em)}}

此时一切正常,环境字段不是空值,并且包含所有定义的属性。当我尝试添加Bean
PersistenceAnnotationBeanPostProcessor
时,问题出现了。因此,当我将此Bean添加到JdbcConfig.class时,环境字段变为null,但当我再次添加此RootConfig环境时,它包含所有需要的值。那么propertySource和这个bean有什么已知的问题吗?
PersistenceAnnotationBeanPostProcessor
是否会对
@PropertySource
或@autowired(@Inject/@resource)环境字段产生某种影响?是否有任何原因导致必须在主配置中配置环境,而不能通过导入从其他配置导入环境?

我认为您的问题与这个春季问题有关

能否尝试将PersistenceAnnotationBeanPostProcessorBean定义设置为静态


我也有同样的问题,我用这种方法解决了。

我认为你的问题与今年春季的问题有关

能否尝试将PersistenceAnnotationBeanPostProcessorBean定义设置为静态

我也有同样的问题,我用这种方式解决了