天天看点

Spring中为bean注入Date对象

比如我们有下面的一个bean:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<code>import java.util.date;</code>

<code> </code> 

<code>public class customer {</code>

<code>    </code><code>date date;</code>

<code>    </code><code>public date getdate() {</code>

<code>        </code><code>return date;</code>

<code>    </code><code>}</code>

<code>    </code><code>public void setdate(date date) {</code>

<code>        </code><code>this.date = date;</code>

<code>    </code><code>@override</code>

<code>    </code><code>public string tostring() {</code>

<code>        </code><code>return "customer [date=" + date + "]";</code>

<code>}</code>

  注意我们上面的bean中有一个date,但是如果我们使用下面的配置:

<code>    </code><code>&lt;</code><code>bean</code> <code>id="customer" class="com.mkyong.common.customer"&gt;</code>

<code>        </code><code>&lt;</code><code>property</code> <code>name="date" value="2010-01-31" /&gt;</code>

<code>    </code><code>&lt;/</code><code>bean</code><code>&gt;</code>

<code>&lt;/</code><code>beans</code><code>&gt;</code>

  然后我们尝试着运行的话

<code>public</code> <code>class</code> <code>app {</code>

<code>    </code><code>public</code> <code>static</code> <code>void</code> <code>main(string[] args) {</code>

<code>        </code><code>applicationcontext context = </code><code>new</code> <code>classpathxmlapplicationcontext(</code>

<code>                </code><code>"springbeans.xml"</code><code>);</code>

<code>        </code><code>customer cust = (customer) context.getbean(</code><code>"customer"</code><code>);</code>

<code>        </code><code>system.out.println(cust);</code>

会出现如下的错误:

声明一个dateformat的bean,然后引用。如下解决:

<code>    </code><code>&lt;</code><code>bean</code> <code>id="dateformat" class="java.text.simpledateformat"&gt;</code>

<code>        </code><code>&lt;</code><code>constructor-arg</code> <code>value="yyyy-mm-dd" /&gt;</code>

<code>        </code><code>&lt;</code><code>property</code> <code>name="date"&gt;</code>

<code>            </code><code>&lt;</code><code>bean</code> <code>factory-bean="dateformat" factory-method="parse"&gt;</code>

<code>                </code><code>&lt;</code><code>constructor-arg</code> <code>value="2010-01-31" /&gt;</code>

<code>            </code><code>&lt;/</code><code>bean</code><code>&gt;</code>

<code>        </code><code>&lt;/</code><code>property</code><code>&gt;</code>

  

我们声明一个customdateeditor,将string转换为date对象。

<code>&lt;</code><code>bean</code> <code>id="dateeditor"</code>

<code>       </code><code>class="org.springframework.beans.propertyeditors.customdateeditor"&gt;</code>

<code>        </code><code>&lt;</code><code>constructor-arg</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>bean</code> <code>class="java.text.simpledateformat"&gt;</code>

<code>                </code><code>&lt;</code><code>constructor-arg</code> <code>value="yyyy-mm-dd" /&gt;</code>

<code>        </code><code>&lt;/</code><code>constructor-arg</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>constructor-arg</code> <code>value="true" /&gt;</code>

<code>&lt;</code><code>bean</code> <code>class="org.springframework.beans.factory.config.customeditorconfigurer"&gt;</code>

<code>       </code><code>&lt;</code><code>property</code> <code>name="customeditors"&gt;</code>

<code>           </code><code>&lt;</code><code>map</code><code>&gt;</code>

<code>               </code><code>&lt;</code><code>entry</code> <code>key="java.util.date"&gt;</code>

<code>                   </code><code>&lt;</code><code>ref</code> <code>local="dateeditor" /&gt;</code>

<code>               </code><code>&lt;/</code><code>entry</code><code>&gt;</code>

<code>           </code><code>&lt;/</code><code>map</code><code>&gt;</code>

<code>       </code><code>&lt;/</code><code>property</code><code>&gt;</code>

<code>   </code><code>&lt;/</code><code>bean</code><code>&gt;</code>

  完整的配置为:

21

22

23

24

25

26

27

28

29

30

31

32

<code>    </code><code>&lt;</code><code>bean</code> <code>id="dateeditor"</code>

<code>        </code><code>class="org.springframework.beans.propertyeditors.customdateeditor"&gt;</code>

<code>    </code><code>&lt;</code><code>bean</code> <code>class="org.springframework.beans.factory.config.customeditorconfigurer"&gt;</code>

<code>        </code><code>&lt;</code><code>property</code> <code>name="customeditors"&gt;</code>

<code>            </code><code>&lt;</code><code>map</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>entry</code> <code>key="java.util.date"&gt;</code>

<code>                    </code><code>&lt;</code><code>ref</code> <code>local="dateeditor" /&gt;</code>

<code>                </code><code>&lt;/</code><code>entry</code><code>&gt;</code>

<code>            </code><code>&lt;/</code><code>map</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>property</code> <code>name="date" value="2010-02-31" /&gt;</code>