V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Newyorkcity
V2EX  ›  问与答

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

  •  1
     
  •   Newyorkcity · 2018-05-29 00:58:04 +08:00 · 1801 次点击
    这是一个创建于 2366 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 条回复    2018-05-29 10:43:16 +08:00
    zjp
        1
    zjp  
       2018-05-29 01:09:37 +08:00 via Android
    @value 了解一下,还有 propertiesBean 适合注入整个配置文件
    推荐一本《 spring 实战》
    Newyorkcity
        2
    Newyorkcity  
    OP
       2018-05-29 07:51:04 +08:00
    @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  
       2018-05-29 09:00:44 +08:00
    1. 配置 spring.datasource.driverClassName = ... spring.datasource.url = ... 到 application.properties, spring 会自动识别
    2. 如果一点都不想用 spring 那一套去读配置的话, 可以看看 java.util.Properties 的 load 方法
    zhaogaz
        4
    zhaogaz  
       2018-05-29 10:43:16 +08:00
    value 惨遭 at,哈哈哈。

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

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

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

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

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

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

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

    我也找过 spring 项目,基本没有让人满意的,很多人推荐自己的,我看了写的都不行。一方面是太旧了,另一方面是没有展示 spring 的各种特性。我希望有能展示 spring 各方面特性、功能、特点、习惯用法的项目,反正我是没找到。。。可能也是搜索方式不对。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1088 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:39 · PVG 06:39 · LAX 14:39 · JFK 17:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.