之前我們都是在xml檔案中定義bean的,比如:
1
2
3
4
5
6
7
8
<code> </code>
<code> </code><code><</code><code>bean</code> <code>id="hellobean" class="com.mkyong.hello.impl.helloworldimpl"></code>
<code></</code><code>beans</code><code>></code>
其實我們可以使用注解來完成這些事情,例如下面的代碼,完成的功能和上面的xml配置的功能是一樣的:
9
10
11
12
13
14
<code>import</code> <code>org.springframework.context.annotation.bean;</code>
<code>import</code> <code>org.springframework.context.annotation.configuration;</code>
<code>import</code> <code>com.mkyong.hello.helloworld;</code>
<code>import</code> <code>com.mkyong.hello.impl.helloworldimpl;</code>
<code>@configuration</code>
<code>public</code> <code>class</code> <code>appconfig {</code>
<code> </code><code>@bean</code><code>(name=</code><code>"hellobean"</code><code>)</code>
<code> </code><code>public</code> <code>helloworld helloworld() {</code>
<code> </code><code>return</code> <code>new</code> <code>helloworldimpl();</code>
<code> </code><code>}</code>
<code>}</code>
想象一個場景,我們有一個很大的工程項目,如果将所有的bean都配置在一個xml檔案中,那麼這個檔案就會非常的大。是以在很多的時候我們都會将一個大的xml配置檔案分割為好幾份。這樣友善管理,最後在總的那個xml檔案中導入就行了,比如:
<code> </code><code><</code><code>import</code> <code>resource="config/customer.xml"/></code>
<code> </code><code><</code><code>import</code> <code>resource="config/scheduler.xml"/></code>
但是現在我們也可以使用javaconfig來完成同樣的工作了:
<code>import</code> <code>org.springframework.context.annotation.import;</code>
<code>@import</code><code>({ customerconfig.</code><code>class</code><code>, schedulerconfig.</code><code>class</code> <code>})</code>
我們對這個例子來看一個demo:
customerbo.java
<code>public</code> <code>class</code> <code>customerbo {</code>
<code> </code><code>public</code> <code>void</code> <code>printmsg(string msg) {</code>
<code> </code><code>system.out.println(</code><code>"customerbo : "</code> <code>+ msg);</code>
schedulerbo.java
<code>public</code> <code>class</code> <code>schedulerbo {</code>
<code> </code><code>system.out.println(</code><code>"schedulerbo : "</code> <code>+ msg);</code>
現在我們來使用注解:
<code>public</code> <code>class</code> <code>customerconfig {</code>
<code> </code><code>@bean</code><code>(name=</code><code>"customer"</code><code>)</code>
<code> </code><code>public</code> <code>customerbo customerbo(){</code>
<code> </code><code>return</code> <code>new</code> <code>customerbo();</code>
<code>public</code> <code>class</code> <code>schedulerconfig {</code>
<code> </code><code>@bean</code><code>(name=</code><code>"scheduler"</code><code>)</code>
<code> </code><code>public</code> <code>schedulerbo suchedulerbo(){</code>
<code> </code><code>return</code> <code>new</code> <code>schedulerbo();</code>
appconfig.java
然後運作:
<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>annotationconfigapplicationcontext(</code>
<code> </code><code>appconfig.</code><code>class</code><code>);</code>
<code> </code><code>customerbo customer = (customerbo) context.getbean(</code><code>"customer"</code><code>);</code>
<code> </code><code>customer.printmsg(</code><code>"hello 1"</code><code>);</code>
<code> </code><code>schedulerbo scheduler = (schedulerbo) context.getbean(</code><code>"scheduler"</code><code>);</code>
<code> </code><code>scheduler.printmsg(</code><code>"hello 2"</code><code>);</code>