天天看點

使用Spring的JavaConfig

之前我們都是在xml檔案中定義bean的,比如:

1

2

3

4

5

6

7

8

<code> </code> 

<code>    </code><code>&lt;</code><code>bean</code> <code>id="hellobean" class="com.mkyong.hello.impl.helloworldimpl"&gt;</code>

<code>&lt;/</code><code>beans</code><code>&gt;</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>&lt;</code><code>import</code> <code>resource="config/customer.xml"/&gt;</code>

<code>        </code><code>&lt;</code><code>import</code> <code>resource="config/scheduler.xml"/&gt;</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>