原来项目中实体类有些属性有默认值,我把默认值移到了properties文件中!在不动原代码的情况下.当实体类new时用spring注入需要的默认值!该在spring中怎么配置

解决方案 »

  1.   

    举个例子,比如你要配置的是数据库<beans>
    <bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
    <list>
    <!-- 此处是你的properties文件存放的位置 -->
    <value>/conf/spring/jdbc.properties</value>
    </list>
    </property>
    </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <!-- 下面的database.driver、database.url这种就是你写在你的properties文件里的key,这样就能将得到的值注入到当前这个类的指定属性了 -->
    <property name="driverClassName" value="${database.driver}" />
    <property name="url" value="${database.url}" />
    <property name="username" value="${database.username}" />
    <property name="password" value="${database.password}" />
    </bean>
      

  2.   

    你说的是让spring去创建bean!但我现在的代码中都是new出来的!
      

  3.   


    你new出来了,还怎么注入呀???要不你就直接用java.util.Properties类读取加载这个属性文件
    然后getProperty(String key) 得到你想要的,set到你new出来的对象里~~
      

  4.   

    new 出来的对象不被Spring接管的吧,就更别提注入了,LS,LZ说要默认值,你这样还是需要手动赋值俄,只不过把value 放到了properties文件...呵呵
      

  5.   

    坚持5楼....
    用spring直接注释也行,不过也是用properties文件private String para1/*
     * @spring.property value = '具体值'
    */
    public void setPara1(String para1){
         this.para1 = para1
    }
      

  6.   

    new 出来的对象不能被注入。
    要想有默认值,在类定义时就填写默认值。
    这个也不影响spring托管对象的注入。
      

  7.   

    读出来不是问题!关键是怎么在new 对象时把默认值给赋上
      

  8.   

    算说点正题上!我现在的作法是新建了一个类!让spring去创建这个类!在属性默认值有变动的实体中在无参的构造器中完成赋值操作
    实体.属性=新建的类.属性
      

  9.   


    在new 对象的时候,如果这个类的属性有默认值在执行构造方法体之前,就会把它初始化,
    而用spring,是在new 了一个对象之后通过set方法,设置的默认值,
    如果你要是想不用spring,然后还不想在类中的属性设置默认值,还想在new对象的时候自动设置默认值,那不可能~~
      

  10.   

       楼主既然是new出来的 就和spring没有关系了 
      

  11.   

    不明白你的意思!你的意思是不是的new 一个对象的时候,给他的属性赋默认值?
      

  12.   

    spring有这样的功能。但是怎么用早就忘记了。使用的是${KEY}或是{key}。使用的是properties中的key
      

  13.   


    我在一楼就已经回了,你说的那种方法,但是他想要new,而不是用spring生成对象~~
      

  14.   

    给LZ一个思路:1、假设你的类是叫User,同时在classpath下有一个user.properties文件,且User类中的属性与user.properties属性对应。2、在类中做一个带是否设置默认值的构造方法:
    public User(Boolean isSetDefaultValue){
        InputStream inputStream = getClass().getClassLoader().getResourceAsStream("user.properties");
        并用Properties来装载此流,这样就可以得到属性对应的值;
        用反射方式为对象赋值;
    Field[] fs = getClass().getDeclaredFields();
    for(Field f : fs){
    if(f.getModifiers() == 25){//final字段是不能赋值的
    continue;
    }
    f.set(this, props.getProperty(f.getName())); }
    }
    3、调用:
    User user = new User();//构造一个不带值的user对象
    User user = new User(true);//构造一个带默认值的user对象4、在Spring框架上使用
    Spring有构造方法注入,或者用使用constructor和autodetect自动装配。
      

  15.   


    这样呀!!LZ的确是在做梦。不改实体代码!!!!Spring-->后期绑定全局静态属性类-->使用静态字段初始化(这就修改了实体代码了)
      

  16.   

    没有答案!平分吧(对不住班班了)!得分的人:
    imasmallbird  
    sjkof
    lyjdamzwf  
    v05120s
    liwenso
    qq774097676  
    blliy117
    qiyifi 
    APOLLO_TS
    zhangjihao