1. 程式人生 > 實用技巧 >Spring-IoC-Bean型別

Spring-IoC-Bean型別

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 public
Class<?> 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