1
用於方法注入的Spring lookup-method屬性,它有助於在每次調用該方法時創建新實例。容器也會動態地爲該類創建子類並重寫該方法。但是,對於我而言,只有一個爲正常注射和方法注射創建的實例。我已經發布了我所嘗試過的完整代碼。我想完全理解lookup-method的工作方式以及它與正常注入的不同之處。Spring查詢方法實例創建
<bean id="processor" class="org.RequestProcessor">
<lookup-method name="getResourceA" bean="resourceA"/>
</bean>
<bean id="resourceA" class="org.ResourceA"/>
<bean id="resourceB" class="org.ResourceB"/>
public abstract class RequestProcessor {
@Autowired
ResourceB resourceB;
public ResourceB getResourceB(){
return resourceB;
}
abstract ResourceA getResourceA();
}
public class ResourceA {
String url ="http://localhost:8080";
public ResourceA(){
System.out.println("Resource A instance creation");
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
public class ResourceB {
String url ="http://localhost:8081";
public ResourceB(){
System.out.println("Resource B instance creation");
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
public class SpringExample {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("org/applicationContext.xml");
RequestProcessor processor = (RequestProcessor)applicationContext.getBean("processor");
for (int i=0;i<3;i++){
ResourceA resource = processor.getResourceA();
System.out.println(resource.getUrl());
}
for (int i=0;i<3;i++){
ResourceB resource = processor.getResourceB();
System.out.println(resource.getUrl());
}
}
}
輸出上面的程序是:
Resource B instance creation
Resource A instance creation
http://localhost:8080
http://localhost:8080
http://localhost:8080
http://localhost:8081
http://localhost:8081
http://localhost:8081
你能告訴我流通過Java代碼來設置查找法,我在運行時創建bean並希望連接lookup-method。 –