Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在spring中将参数绑定到bean_Java_Spring_Javabeans - Fatal编程技术网

Java 在spring中将参数绑定到bean

Java 在spring中将参数绑定到bean,java,spring,javabeans,Java,Spring,Javabeans,我创建了一个类(名为iperfAndroidApp)来实现一些接口(名为AppService),并创建了另一个类来使用这个iperfAndroidApp(名为IperfApp)。IperfApp应该是其他项目的API。 我这样做是为了将来能够在Android实例和IOS之间进行替换。 我希望iperfAndroidApp类是xml文件中的一个bean 我得到的要点是IPerApp在构造函数中获得一些参数(来自外部项目),我想将它们绑定到bean的构造函数,这样我就不必使用“new”(第8行) 我

我创建了一个类(名为iperfAndroidApp)来实现一些接口(名为AppService),并创建了另一个类来使用这个iperfAndroidApp(名为IperfApp)。IperfApp应该是其他项目的API。 我这样做是为了将来能够在Android实例和IOS之间进行替换。 我希望iperfAndroidApp类是xml文件中的一个bean

我得到的要点是IPerApp在构造函数中获得一些参数(来自外部项目),我想将它们绑定到bean的构造函数,这样我就不必使用“new”(第8行)

我删掉了不相关的部分,以便于你阅读

//THE API THAT I AM CREATING
public class IperfApp {
//THE SERVICE THAT SHOULD BE INITIALIZED WITH ANDROID OR IOS
 AppService iperf;

 //I WANT TO PASS THE ARGUMENTS TO THE BEAN INSTEAD OF USING NEW
 public IperfApp(List<String> udids, List<String> commands, int runTime) {
 iperf=new IperfAndroidApp(udids, commands, runTime);
 }

...
}




//THE BEAN I WANT TO USE
public class IperfAndroidApp extends AndroidApp {

    private AndroidServer androidServer;
    private List<String> commands;
    private int runTime;

    public IperfAndroidApp(List<String> udids, List<String> commands, int runTime) {
        super(udids);
        this.commands = commands;
        this.runTime = runTime;
    }
....
}



public abstract class AndroidApp extends AppClient {...}
public abstract class AppClient implements AppService {...}
//我正在创建的API
公共类IPerApp{
//应使用ANDROID或IOS初始化的服务
应用程序服务iperf;
//我希望将参数传递给BEAN,而不是使用NEW
公共IPerApp(列出UDID、列出命令、int运行时){
iperf=新的IperfAndroidApp(UDID、命令、运行时);
}
...
}
//我想用的豆子
公共类IperfAndroidApp扩展了AndroidApp{
私有AndroidServer AndroidServer;
私有列表命令;
私有int运行时;
公共IperfAndroidApp(列表UDID、列表命令、int运行时){
超级(udids);
this.commands=命令;
this.runTime=运行时;
}
....
}
公共抽象类AndroidApp扩展了AppClient{…}
公共抽象类AppClient实现AppService{…}
spring配置文件中的bean:

 <bean id="iperfInstance" 
  class="com.airspan.testspan.smarphones.Client.IperfAndroidApp" scope="singleton">
 <!--  want to bind args from the code here -->
 </bean>

我还尝试了使用spring类配置的不同方法

@Configurable
@ComponentScan("com.airspan.testspan.smarphones")
@PropertySource("classpath:config.properties")
public class AppConfigurations {
 //--------- to load the config.property file need to initialize it for spring-----------
 @Bean
 public static PropertySourcesPlaceholderConfigurer
 propertySourcesPlaceHolderConfigurer() {
 return new PropertySourcesPlaceholderConfigurer();
 }


 //---------------------Beans of Apps------------------------
 @Bean
 public IperfAndroidApp iperfAppInstance(List<String> udids, List<String> commands, int runTime){
 return new IperfAndroidApp(udids, commands, runTime);
 }

}
public class IperfAppRunner extends AppRunner {
 private AppService iperf;
 public IperfAppRunner(List<String> udids, List<String> commands, int runTime) {
 //iperf = new IperfAndroidApp(udids, commands, runTime);
 iperf=(AppService) context.getBean("iperfAppInstance", udids, commands, runTime);
 }
 ...
} 
@可配置
@组件扫描(“com.airspan.testspan.smarphones”)
@PropertySource(“classpath:config.properties”)
公共类应用程序配置{
//---------要加载config.property文件,需要为spring初始化它-----------
@豆子
公共静态属性资源占位符配置器
属性资源占位符配置器(){
返回新属性资源占位符配置器();
}
//---------------------应用程序豆------------------------
@豆子
公共IperfAndroidApp IPerAppInstance(列出UDID、列出命令、int运行时){
返回新的IperfAndroidApp(udid、命令、运行时);
}
}
公共类IPerAppRunner扩展了AppRunner{
私人应用程序服务iperf;
公共IPerAppRunner(列出UDID、列出命令、int运行时){
//iperf=新的IperfAndroidApp(UDID、命令、运行时);
iperf=(AppService)context.getBean(“iperfAppInstance”,UDID,命令,运行时);
}
...
} 
但它似乎没有通过辩论

我得到一个例外:

Error creating bean with name 'iperfAppInstance' defined in com.airspan.testspan.smarphones.AppConfigurations: Unsatisfied dependency expressed through method 'iperfAppInstance' parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'java.util.List<java.lang.String>' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
 at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749)
使用com.airspan.testspan.smarphones.AppConfigurations中定义的名称“iperfAppInstance”创建bean时出错:通过方法“iperfAppInstance”参数0表示的未满足的依赖关系;嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:没有类型为“java.util.List”的符合条件的bean可用:至少需要1个符合autowire候选条件的bean。依赖项批注:{}
位于org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749)
基本上,我正在尝试使用“spring factory”创建一个对象,其中包含一些给定的参数


有可能吗?如果是,怎么做?

Ehm。。。。您应该从一个简单的Spring教程开始。去看看这个:。我已经知道这个教程了。。这对我解决这个问题有什么帮助?嗯。。。。您应该从一个简单的Spring教程开始。去看看这个:。我已经知道这个教程了。。这对我解决这个问题有什么帮助?