天天看點

Spring中使用inner bean

有點類似java 内部類。看個demo。假設有下面的一個bean:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<code>public</code> <code>class</code> <code>customer</code>

<code>{</code>

<code>    </code><code>private</code> <code>person person;</code>

<code> </code> 

<code>    </code><code>public</code> <code>customer(person person) {</code>

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

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

<code>    </code><code>public</code> <code>void</code> <code>setperson(person person) {</code>

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

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

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

<code>}</code>

  

<code>public</code> <code>class</code> <code>person</code>

<code>    </code><code>private</code> <code>string name;</code>

<code>    </code><code>private</code> <code>string address;</code>

<code>    </code><code>private</code> <code>int</code> <code>age;</code>

<code>    </code><code>//getter and setter methods</code>

<code>        </code><code>return</code> <code>"person [address="</code> <code>+ address + ",</code>

<code>                               </code><code>age=</code><code>" + age + "</code><code>, name=</code><code>" + name + "</code><code>]";</code>

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

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

<code>        </code><code>&lt;</code><code>property</code> <code>name="person" ref="personbean" /&gt;</code>

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

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

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

<code>        </code><code>&lt;</code><code>property</code> <code>name="address" value="address1" /&gt;</code>

<code>        </code><code>&lt;</code><code>property</code> <code>name="age" value="28" /&gt;</code>

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

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

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

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

<code>                </code><code>&lt;</code><code>property</code> <code>name="address" value="address1" /&gt;</code>

<code>                </code><code>&lt;</code><code>property</code> <code>name="age" value="28" /&gt;</code>

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

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

  我們也可以使用構造函數注入

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

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

  note

注意,在inner bean中,id和name不是必須的,因為他們會被容器忽略。

<code>import</code> <code>org.springframework.context.applicationcontext;</code>

<code>import</code> <code>org.springframework.context.support.classpathxmlapplicationcontext;</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>{</code>

<code>        </code><code>applicationcontext context =</code>

<code>          </code><code>new</code> <code>classpathxmlapplicationcontext(</code><code>new</code> <code>string[] {</code><code>"spring-customer.xml"</code><code>});</code>

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

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