2013-06-11 66 views
3

我有一个参数化的构造函数。我怎样才能使用@Autowired注释。下面的 是样本片段。将参数传递给弹簧中的Autowired构造函数

@Autowired 
private MyImplClass myImplClass; 

我在MyImplClass中有一个参数化的构造函数,如下所示。

public class MyImplClass{ 

    WebDriver driver = new FireFoxDriver(); 

    public MyImplClass(WebDriver driver){ 
     this.driver = driver; 
    } 
} 

我需要将驱动程序传递给MyImplClass。 使用@Autowired如何实现这一点?

感谢, 马诺

+1

可以使用'来MyImplClass @价值'注释。请参见[this](http://stackoverflow.com/q/6739566/1037210)问题。 – Lion

回答

2

一种方法是在你的Spring上下文创建的webdriver:

<bean class="org.openqa.selenium.firefox.FirefoxDriver"/> 

,并注入其使用构造自动装配

@Component 
public class MyImplClass{ 

    private WebDriver driver; 

    @Autowire 
    public MyImplClass(WebDriver driver){ 
     this.driver = driver; 
    } 
} 
+0

让我对此更加清楚。 'MyImplClass'在** project1 **中,'MyTestClass'在** project2 **中。 我在'MyTestClass'中使用** @ Autowired **注解。 如果我没有MyImplClass中的参数化构造函数,那么我将以下面的方式自动装配** @ Autowired public MyImplClass myImplClass **。 但我有一个构造函数,需要** WebDriver **我如何使用@Autowired在** project2 ** – user2649233

+0

中传递它,而不使用Autowired注释,我使用如下所示在“MyTestClass in project2”中创建一个对象。 'MyImplClass myImplClass = new MyImplClass(EnumBrowsers.FIREFOX.driver());' 我如何使用Autowired注释实现相同。 – user2649233

+0

当您通过自动装配注入对象时,您从不必传递构造函数参数。这是因为Spring在上下文初始化时会为你做这件事。如果你不相信这个,在你的类的构造函数中输出一个系统声明。当你启动你的程序时,Spring将自动创建一个具有所需构造函数arg的类的实例 – gerrytan

相关问题