Java 在spring中将参数绑定到bean
我创建了一个类(名为iperfAndroidApp)来实现一些接口(名为AppService),并创建了另一个类来使用这个iperfAndroidApp(名为IperfApp)。IperfApp应该是其他项目的API。 我这样做是为了将来能够在Android实例和IOS之间进行替换。 我希望iperfAndroidApp类是xml文件中的一个bean 我得到的要点是IPerApp在构造函数中获得一些参数(来自外部项目),我想将它们绑定到bean的构造函数,这样我就不必使用“new”(第8行) 我删掉了不相关的部分,以便于你阅读Java 在spring中将参数绑定到bean,java,spring,javabeans,Java,Spring,Javabeans,我创建了一个类(名为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教程开始。去看看这个:。我已经知道这个教程了。。这对我解决这个问题有什么帮助?