關于Spring工廠方法注入屬性方式
靜態(tài)工廠注入
在 Spring 中,也可以使用靜態(tài)工廠的方式實例化 Bean。此種方式需要提供一個靜態(tài)工廠方法創(chuàng)建 Bean 的實例。
① 創(chuàng)建實體類
public class Person{
String name;
public void setName(String name){
this.name = name;
}
}② 創(chuàng)建靜態(tài)工廠類
創(chuàng)建一個名為 MyBeanFactory 的類,并在該類中創(chuàng)建一個名為 createBean() 的靜態(tài)方法,用于創(chuàng)建 Bean 的實例,如下所示。
public class MyBeanFactory {
// 創(chuàng)建Bean實例的靜態(tài)工廠方法
public static Person createBean() {
Person person = new Person();
person.setName("glp");
return person;
}
}③ 創(chuàng)建 Spring 配置文件
創(chuàng)建 Spring 的配置文件 applicationContext.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" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<bean id="person" class="com.mengma.instance.static_factory.MyBeanFactory"
factory-method="createBean" />
</beans>上述代碼中,定義了一個 id 為 person 的 Bean,其中 class 屬性指定了其對應的工廠實現(xiàn)類為 MyBeanFactory,而 factory-method 屬性用于告訴 Spring 容器調用工廠類中的 createBean() 方法獲取 Bean 的實例。
實例工廠注入
在 Spring 中,還有一種實例化 Bean 的方式就是采用實例工廠,直接在成員方法中創(chuàng)建 Bean 的實例。
同時,在配置文件中,需要實例化的 Bean 也不是通過 class 屬性直接指向其實例化的類,而是通過 factory-bean 屬性配置一個實例工廠,然后使用 factory-method 屬性確定使用工廠中的哪個方法。
① 創(chuàng)建實體類
public class Person{
String name;
public void setName(String name){
this.name = name;
}
}② 創(chuàng)建實例工廠類
創(chuàng)建一個名為 MyBeanFactory 的類。
public class MyBeanFactory {
public MyBeanFactory() {
System.out.println("person3工廠實例化中");
}
// 創(chuàng)建Bean的方法
public Person createBean() {
Person person = new Person();
person.setName("cbj");
return person;
}
}③ 創(chuàng)建 Spring 配置文件
創(chuàng)建 Spring 的配置文件 applicationContext.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" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<!-- 配置實例工廠 -->
<bean id="myBeanFactory" class="com.mengma.instance.factory.MyBeanFactory" />
<!-- factory-bean屬性指定一個實例工廠,factory-method屬性確定使用工廠中的哪個方法 -->
<bean id="person" factory-bean="myBeanFactory" factory-method="createBean" />
</beans>上述代碼中,首先配置了一個實例工廠 Bean,然后配置了需要實例化的 Bean。
在 id 為 person的 Bean 中,使用 factory-bean 屬性指定一個實例工廠,該屬性值就是實例工廠的 id 屬性值。
使用 factory-method 屬性確定使用工廠中的 createBean() 方法。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Springboot jdbctemplate整合實現(xiàn)步驟解析
這篇文章主要介紹了Springboot jdbctemplate整合實現(xiàn)步驟解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-08-08
MyBatis動態(tài)SQL與MyBatis Generator插件使用教程
動態(tài)SQL是Mybatis的強大特性之?,能夠完成不同條件下不同的sql拼接,本文給大家介紹MyBatis動態(tài)SQL與MyBatis Generator插件使用,感興趣的朋友跟隨小編一起看看吧2026-03-03
基于@AllArgsConstructor與@Value共用的問題解決
這篇文章主要介紹了基于@AllArgsConstructor與@Value共用的問題解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
LambdaQueryWrapper的實現(xiàn)原理分析和lambda的序列化問題
這篇文章主要介紹了LambdaQueryWrapper的實現(xiàn)原理分析和lambda的序列化問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教。2022-01-01
淺談maven的jar包和war包區(qū)別 以及打包方法
下面小編就為大家分享一篇淺談maven的jar包和war包區(qū)別 以及打包方法,具有很好的參考價值,希望對大家有所幫助2017-11-11

