您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

SpringPropertyPlaceholderConfigurer和context:property-placeholder

SpringPropertyPlaceholderConfigurer和context:property-placeholder

<context:property-placeholder ... />是与PropertyPlaceholderConfigurer等效的XML。所以,选择那个。在<util:properties/>简单的工厂一个java.util.Properties实例可以注入。

在Spring 3.1(不是3.0 …)中,你可以执行以下操作:

@Configuration
@PropertySource("/foo/bar/services.properties")
public class ServiceConfiguration { 

    @Autowired Environment environment; 

    @Bean public javax.sql.DataSource dataSource( ){ 
        String user = this.environment.getProperty("ds.user");
        ...
    } 
}

在Spring 3.0中,你可以使用SpEl批注“访问”使用PropertyPlaceHolderConfigurer机制定义的属性

@Value("${ds.user}") private String user;

如果要一起删除XML,只需使用Java配置手动注册PropertyPlaceholderConfigurer。我更喜欢3.1方法。但是,如果你使用Spring 3.0方法(因为3.1尚不支持GA …),你现在可以像上面这样定义XML:

@Configuration 
public class MySpring3Configuration {     
        @Bean 
        public static PropertyPlaceholderConfigurer configurer() { 
             PropertyPlaceholderConfigurer ppc = ...
             ppc.setLocations(...);
             return ppc; 
        } 

        @Bean 
        public class DataSource dataSource(
                @Value("${ds.user}") String user, 
                @Value("${ds.pw}") String pw, 
                ...) { 
            DataSource ds = ...
            ds.setUser(user);
            ds.setPassword(pw);                        
            ...
            return ds;
        }
}

注意,PPC是使用static bean定义方法定义的。这是确保豆类尽早注册所必需的,因为PPC是beanfactoryPostProcessor-它可以在上下文中影响豆类本身的注册,因此必须先进行其他所有事情的注册

Java 2022/1/1 18:14:17 有616人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶