經過構造方法實例化 經過靜態工廠實例化 經過實例工廠實例化 經過FactoryBean實例化java
package com.rumenz;
public class RumenzA {
private String id;
private String name;
public static RumenzA createRumenzA(){
RumenzA rumenzA=new RumenzA();
rumenzA.setId("123");
rumenzA.setName("入門小站");
return rumenzA;
}
public RumenzA() {
System.out.println("RumenzA 無參構造方法");
}
public RumenzA(String id) {
this.id = id;
System.out.println("ID構造方法");
}
// set get省略
}
複製代碼
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="rumenz" class="com.rumenz.RumenzA" />
<bean id="rumenz1" class="com.rumenz.RumenzA">
<constructor-arg name="id" value="1"/>
</bean>
</beans>
複製代碼
package com.rumenz;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class DemoApplication {
public static void main(String[] args) {
ClassPathXmlApplicationContext ca=new ClassPathXmlApplicationContext("beans.xml");
RumenzA rumenzA=(RumenzA)ca.getBean("rumenz");
}
}
複製代碼
xxx.DefaultListableBeanFactory - Creating shared instance of singleton bean 'rumenz'
RumenzA 無參構造方法
xxx.DefaultListableBeanFactory - Creating shared instance of singleton bean 'rumenz1'
ID構造方法
複製代碼
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="rFactory" class="com.rumenz.RumenzFactory" factory-method="rumenzFactory"/>
<bean id="rFactory1" class="com.rumenz.RumenzFactory" factory-method="rumenzFactory">
<constructor-arg name="id" value="111"/>
</bean>
</beans>
複製代碼
package com.rumenz;
public class RumenzFactory {
//靜態方法
public static RumenzA rumenzFactory(){
return new RumenzA();
}
public static RumenzA rumenzFactory(String id){
return new RumenzA(id);
}
}
複製代碼
package com.rumenz;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class DemoApplication {
public static void main(String[] args) {
ClassPathXmlApplicationContext ca=new ClassPathXmlApplicationContext("beans.xml");
}
}
複製代碼
xxx.DefaultListableBeanFactory - Creating shared instance of singleton bean 'rFactory'
RumenzA 無參構造方法
xxx.DefaultListableBeanFactory - Creating shared instance of singleton bean 'rFactory1'
ID構造方法
複製代碼
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="rFactory" class="com.rumenz.RumenzFactory" />
<bean id="rumenz" factory-bean="rFactory" factory-method="rumenzFactory"></bean>
<bean id="rumenz1" factory-bean="rFactory" factory-method="rumenzFactory">
<constructor-arg name="id" value="666"></constructor-arg>
</bean>
</beans>
複製代碼
package com.rumenz;
public class RumenzFactory {
//不能用靜態方法
public RumenzA rumenzFactory(){
return new RumenzA();
}
public RumenzA rumenzFactory(String id){
return new RumenzA(id);
}
}
複製代碼
package com.rumenz;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class DemoApplication {
public static void main(String[] args) {
ClassPathXmlApplicationContext ca=new ClassPathXmlApplicationContext("beans.xml");
//RumenzA rumenzA=(RumenzA)ca.getBean("rFactory1");
}
}
複製代碼
xxx.DefaultListableBeanFactory - Creating shared instance of singleton bean 'rumenz'
RumenzA 無參構造方法
xxx.DefaultListableBeanFactory - Creating shared instance of singleton bean 'rumenz1'
ID構造方法
複製代碼
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="rumenz-by-factoryBean" class="com.rumenz.RumenzAFactoryBean"/>
</beans>
複製代碼
package com.rumenz;
import org.springframework.beans.factory.FactoryBean;
public class RumenzAFactoryBean implements FactoryBean {
@Override
public Object getObject() throws Exception {
return RumenzA.createRumenzA();
}
@Override
public Class<?> getObjectType() {
return RumenzA.class;
}
}
複製代碼
package com.rumenz;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class DemoApplication {
public static void main(String[] args) {
ClassPathXmlApplicationContext ca=new ClassPathXmlApplicationContext("beans.xml");
RumenzA rumenzA=(RumenzA)ca.getBean("rumenz-by-factoryBean");
}
}
複製代碼
輸出/異步加載bean面試
xxx.DefaultListableBeanFactory - Creating shared instance of singleton bean 'rumenz-by-factoryBean'
RumenzA 無參構造方法
複製代碼
你們看完有什麼不懂的能夠在下方留言討論,也能夠關注我私信問我,我看到後都會回答的。也歡迎你們關注個人公衆號:前程有光,金三銀四跳槽面試季,整理了1000多道將近500多頁pdf文檔的Java面試題資料,文章都會在裏面更新,整理的資料也會放在裏面。謝謝你的觀看,以爲文章對你有幫助的話記得關注我點個贊支持一下!spring