V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Newyorkcity
V2EX  ›  问与答

初学 Spring 的小问题,要给 bean 注入值,键值对保存在一个 properties 文件里,如何导入?

  •  1
     
  •   Newyorkcity · May 29, 2018 · 2280 views
    This topic created in 2890 days ago, the information mentioned may be changed or developed.

    c3p0config.properties 下有

    jdbcUrl = "jdbc:mysql://localhost:3306/myproject1_simplesite"
    driverClass = "com.mysql.jdbc.Driver"
    user = "root"
    password = "root"
    

    显示地使用 javaconfig 来配置 Dao

    @Configuration
    public class DaoConfig {
        @Bean(name = "dataSource")
        public DataSource c3p0DataSource(){
            ComboPooledDataSource c3p0dataSource = new ComboPooledDataSource();
            c3p0dataSource.setJdbcUrl(#{我该如何表达 c3p0config.properties 中的 jdbcurl});
            
        }
    
        @Bean(name = "userDao")
        public UserDao userDao(){
    
        }
    }
    
    

    我知道 SpEL 允许#{beanid.attr}
    但现在我只有一个 properties 文件,但能否在不创建 bean 的前提下用 SpEL 明确表达 properties 中的属性值?
    谢谢


    另外感觉 Spring 这个东西学起来的话,没有大型项目,似乎很难做到熟练?不像是 Servlet 学起来,自己构思一些小项目练一练,熟悉还挺好.请问诸位在学习的时候都是如何掌握 Spring 的呢?有什么合适的适合入门 Spring 的项目?
    谢谢
    4 replies    2018-05-29 10:43:16 +08:00
    zjp
        1
    zjp  
       May 29, 2018 via Android
    @value 了解一下,还有 propertiesBean 适合注入整个配置文件
    推荐一本《 spring 实战》
    Newyorkcity
        2
    Newyorkcity  
    OP
       May 29, 2018
    @zjp 我看的就是《 spring 实战》.. 感觉并不是很友好, 比如实现同一个功能的不同操作,有些设置是不同操作里通用的,但它在第一个操作里讲了,后面那个操作就不提了..而且这本书第三章我看来看去也没看到怎么导入 properties 文件..
    你说用 @value 注解...第一个 @value 应该是自动扫描装配里采用的吧,我这里问的问题是显示 javaconfig 配置啊..
    另一个书上举了这么一个例子,说可以用 SystemProperties 对象引用系统属性
    我翻遍上下文却也没找到它在哪里定义的 ystemProperties 对象,又是何时在 ystemProperties (我还不知道这是不是个 properties 文件)里添加了 disc.title 的值...
    它在上面讲解『声明属性源并用 Spring 的 Environment 来检索属性』时倒是用 @PropertySource 加载了一个 app.properties 的文件,里面有 disc.title....那它的意思就是 @PropertySource 可以添加 properties 文件的内容到 SystemProperties 中,之后使用 properties 文件中的属性就用 SystemProperties?文章中也没有明示..
    omengye
        3
    omengye  
       May 29, 2018
    1. 配置 spring.datasource.driverClassName = ... spring.datasource.url = ... 到 application.properties, spring 会自动识别
    2. 如果一点都不想用 spring 那一套去读配置的话, 可以看看 java.util.Properties 的 load 方法
    zhaogaz
        4
    zhaogaz  
       May 29, 2018
    value 惨遭 at,哈哈哈。

    是这样的,spring 自带 properties 扫描的工具,可以吧 properties 获取到统一处理。大概是叫 PropertiesFactoryBean

    我不知道这算不算你说的创建 bean,我个人觉得只是配置一下自带的 bean。

    再一点,spring 实战 我也看过了。基本是官方手册的简单汉化版。

    官方手册写的东西多而全。有空的话可以看看。

    关于分割线后面的内容,是这样的,spring 这种东西就是在业务推动下产生的一种抽象,你脱离了实际项目当然弄不明白了。

    我也是初学者,算不上掌握,目前在看官方的说明书。

    入门的项目也没什么推荐的,想要入门的话随便哪个都行吧。

    我也找过 spring 项目,基本没有让人满意的,很多人推荐自己的,我看了写的都不行。一方面是太旧了,另一方面是没有展示 spring 的各种特性。我希望有能展示 spring 各方面特性、功能、特点、习惯用法的项目,反正我是没找到。。。可能也是搜索方式不对。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3571 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 11:09 · PVG 19:09 · LAX 04:09 · JFK 07:09
    ♥ Do have faith in what you're doing.