Spring-IoC-Bean型別
阿新 • • 發佈:2020-08-15
1.Spring有兩種型別的bean,一種是普通bean,另一種是工廠bean(FactoryBean)
2.普通bean:在配置檔案中定義的bean型別就是返回型別
3.工廠bean:在配置檔案中定義的bean型別可以和返回型別不一樣
示例:
(1)建立物件
第一步、建立類,讓這個類作為工廠bean,實現介面FactoryBean
第二步、實現接口裡面的方法,在實現方法中定義返回的bean型別
package com.company.spring5.factorybean; import org.springframework.beans.factory.FactoryBean; /*** @author orz * @create 2020-08-15 10:10 */ public class Mybean implements FactoryBean<Course> { //定義返回bean @Override public Course getObject() throws Exception { Course course=new Course(); course.setCname("JAVA"); return course; } @Override publicClass<?> getObjectType() { return null; } }
package com.company.spring5.factorybean; /** * @author orz * @create 2020-08-15 10:15 */ public class Course { private String cname; public void setCname(String cname) { this.cname = cname; } }
(2)配置檔案
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="myBean" class="com.company.spring5.factorybean.Mybean"></bean> </beans>
(3)測試
package com.company.spring5.factorybean; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * @author orz * @create 2020-08-15 10:12 */ public class Test1 { @Test public void test1() { ApplicationContext context=new ClassPathXmlApplicationContext("bean6.xml"); Course course = context.getBean("myBean", Course.class); System.out.println(course); } }
(4)結果
com.company.spring5.factorybean.Course@13e344d