2012-07-20 227 views
1

我是新來的Spring,我想知道是否可以通過註釋其變量必須注入的類來加載應用程序(而不是使用ApplicationContext ctx = new ApplicationContext(「myAppContext」)) 。通過註解類加載應用程序上下文

讓我給下面的例子:

我有這個類TestSpring.java將字符串應該被裝配

package mytest; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.beans.factory.annotation.Qualifier; 

//Is it possible to put an annotation here that loads the application context "TestSpringContext.xm"?? 
public class TestSpring { 

    @Autowired 
    @Qualifier("myStringBean") 
    private String myString; 


    /** 
    * Should show the value of the injected string 
    */ 
    public void showString() { 
     System.out.println(myString); 
    } 

} 

Spring bean配置文件(TestSpringContext.xml)看起來像這樣

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd" 
     > 

<context:annotation-config /> 

<bean id="myStringBean" class="java.lang.String"> 
<constructor-arg value="I am an injected String."/> 
</bean> 
</beans> 

現在我想顯示自動佈線字符串的值使用下面的代碼(在TestSpring.java聲明)在RunTestSpring.java

package mytest; 

public class RunTestSpring { 

    public static void main(String[] args) { 
     TestSpring testInstance = new TestSpring(); 
     testInstance.showString(); 

    } 

} 

現在我的問題,是有可能同時通過只標註RunTestSpring.java加載應用程序上下文中運行「RunTestSpring.java」成功。如果是,用哪個註釋?

回答

2

我會建議編寫一個JUnit類,它將使用彈簧注入來進行環境初始化。像這樣的東西 -

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations="/spring/spring-wireup.xml", inheritLocations = true) 
public class MyTestCase extends TestCase { 
    // your test methods ... 
} 
+0

Thx的答案,但我已經知道如何做一個JUnit測試。我想在Util類中使用TestSpring.java類(它超出了Test範圍),這就是爲什麼註解@RunWith(SpringJUnit4ClassRunner.class)不適合這種情況。但是 – Horace 2012-07-20 18:03:29

+0

不確定@ImportResource是否是您需要的註釋。我沒有嘗試過。請參閱此處的文檔[http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/context/annotation/Configuration.html]和一個示例[http:// www。 theserverside.com/tip/Combining-Annotation-and-XML-Configurations-in-your-Spring-3-Applications] – devang 2012-07-20 18:13:07

相關問題