Spring?IOC?xml方式進(jìn)行工廠Bean操作詳解
spring中有兩種Bean
第一種 普通 Bean 就是我們在配置文件中 定義的類對象 創(chuàng)建bean 并定義相關(guān)的id和聲明類對象
普通bean的特點(diǎn)在于 在配置文件中定義的類型 也就是返回類型
就比如 你定義的是一個(gè) book類的類型 那你這個(gè)bean返回的 也比如是個(gè)book類型的對象
第二種 是在工廠類中統(tǒng)一管理的工廠Bean
特點(diǎn)上 還是有比較大區(qū)別的 首先 工廠Bean 又叫FactoryBean 他定義的類型和返回類型是可以不一樣的
通常作為一個(gè)工廠類 來管理bean對象操作
我們創(chuàng)建一個(gè)java項(xiàng)目 引入spring中的基本依賴
然后在src下創(chuàng)建兩個(gè)包 我這里直接叫 spring5 和 collectiontype 你們可以根據(jù)自己的喜好起名 跟我的一樣 可以避免一些名字問題 畢竟你們的代碼大部分可以直接從我這復(fù)制
然后 我們在 collectiontype包下創(chuàng)建一個(gè) Course 類 參考代碼如下
package collectiontype;
//課程類
public class Course {
//課程名稱
private String cname;
public void setCname(String cname) {
this.cname = cname;
}
public String toString() {
return "cname = "+cname;
}
}
這是一個(gè)管理課程的類 定義 字符串的cname 代表課程名稱 然后 定義了他的set方法
改寫了類的toString方法 這樣直接輸出對象 就會(huì)輸出cname的值
在 spring5目錄下創(chuàng)建一個(gè)java類 我這里取名為MyBean
package spring5;
import collectiontype.Course;
import org.springframework.beans.factory.FactoryBean;
public class MyBean implements FactoryBean<Course> {
@Override
public Course getObject() throws Exception {
Course course = new Course();
course.setCname("測試工具");
return course;
}
@Override
public Class<?> getObjectType() {
return null;
}
}
這里 我們實(shí)現(xiàn)了 FactoryBean接口 這樣就表示他是一個(gè)工廠類
然后 定義泛型 指定Course對象類型 這個(gè)就代表 我們返回的是一個(gè) Course類的對象
getObject返回的值 就是最后 bean對象返回的值
然后我們在src下創(chuàng)建 bean.xml 配置文件 參考代碼如下
<?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 http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="mybean" class="spring5.MyBean"></bean>
</beans>
這里 我們就創(chuàng)建了一個(gè)bean MyBean對象
然后 在src下創(chuàng)建一個(gè)text測試類 參考代碼如下
import collectiontype.Course;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class text {
public static void main(String args[]) {
//獲取配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
Course course = context.getBean("mybean", Course.class);
System.out.println(course);
}
}
可以看到 我們創(chuàng)建的是mybean的對象反射對象 但我們接收的類型是Course類的 因?yàn)槲覀僊yBean實(shí)際返回的是一個(gè)Course類的對象
然后通過System.out.println輸出了對象的toString方法
運(yùn)行結(jié)果如下

到此這篇關(guān)于Spring IOC xml方式進(jìn)行工廠Bean操作詳解的文章就介紹到這了,更多相關(guān)Spring 工廠Bean操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
全面解析Spring Security 內(nèi)置 Filter
這篇文章主要介紹了Spring Security 內(nèi)置 Filter的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
SpringBoot使用validation做參數(shù)校驗(yàn)的實(shí)現(xiàn)步驟
這篇文章主要介紹了SpringBoot使用validation做參數(shù)校驗(yàn)的實(shí)現(xiàn)步驟,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot,感興趣的朋友可以了解下2021-05-05
Spring容器初始化擴(kuò)展點(diǎn)之ApplicationContextInitializer詳解
ApplicationContextInitializer是Spring框架提供的一個(gè)接口,用于在Spring應(yīng)用上下文刷新之前對其進(jìn)行自定義初始化,本文介紹Spring容器初始化擴(kuò)展點(diǎn)之ApplicationContextInitializer,感興趣的朋友一起看看吧2025-02-02
java堆棧類使用實(shí)例(java中stack的使用方法)
java中stack的使用方法,堆棧是一種"后進(jìn)先出"(LIFO) 的數(shù)據(jù)結(jié)構(gòu), 只能在一端進(jìn)行插入(稱為"壓棧") 或刪除 (稱為"出棧")數(shù)據(jù)的操作,下面看示例吧2013-12-12

