最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring實例化對象的幾種常見方式

 更新時間:2024年12月17日 09:48:45   作者:我也有魚魚蒸  
Spring框架作為一個輕量級的控制反轉(zhuǎn)容器,為開發(fā)者提供了多種對象實例化的策略,通過這些策略,開發(fā)者可以更加靈活地控制對象的生命周期和依賴關(guān)系,無論是通過XML配置、注解配置還是Java配置,Spring都能輕松地實現(xiàn)對象的實例化,本文將介紹Spring實例化對象的幾種常見方式

前言

Spring框架作為一個輕量級的控制反轉(zhuǎn)(IoC)容器,為開發(fā)者提供了多種對象實例化的策略。通過這些策略,開發(fā)者可以更加靈活地控制對象的生命周期和依賴關(guān)系。無論是通過XML配置、注解配置還是Java配置,Spring都能輕松地實現(xiàn)對象的實例化。本文將介紹Spring實例化對象的幾種常見方式。

前面的例子都是無參構(gòu)造實例化,所以這里就不再贅述。

有參構(gòu)造實例化 

先提供一個有參的構(gòu)造方法:

    public UserService(String str){
        System.out.println("有參構(gòu)造實例化對象"+str);
    }

然后在配置的xml文件使用constructor-arg添加參數(shù),value為參數(shù)的值

    <bean id="text" class="com.cc.service.UserService" >
        <constructor-arg name="str" value="hhhhhh"/>
    </bean>

注意name的值要與形參相同:

運行結(jié)果如圖:

在有多個參數(shù)的情況下,還需要使用index屬性來配置參數(shù)的值(如果name屬性都配置了也可以不用index):

    public UserService(String str,int string){
        System.out.println("有參構(gòu)造實例化對象"+str+","+string);
    }
    <bean id="text" class="com.cc.service.UserService" >
        <constructor-arg name="str" index="0" value=""/>
        <constructor-arg name="string" index="1" value="188"/>
    </bean>

工廠方式實例化對象

靜態(tài)工廠方式實例化對象

靜態(tài)工廠方式實例化對象是通過屬性factory-method來指定一個靜態(tài)方法,在該靜態(tài)方法中達到創(chuàng)建對象的目標并返回交給spring容器管理。

<bean id="user" class="com.cc.entity.User" factory-method="createObj"></bean>
public class User {
 
    public static Person createObj() {
        return new Person();
    }
}
public class Main {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext a = new ClassPathXmlApplicationContext("test.xml");
        Person user = (Person) a.getBean("user");
        System.out.println(user);
    }
}

采用靜態(tài)工廠的方式去實例化對象,只需要在bean標簽中指定一個靜態(tài)方法即可,用factory-method屬性來指定,方面名自已取,反正由idea自動幫我們創(chuàng)建好。然后我們只需要在創(chuàng)建好的靜態(tài)方法中返回一個對象就搞定了。  

實例工廠方式實例化對象

實例工廠方式與靜態(tài)工廠方式略有不同:

靜態(tài)工廠方式是一個靜態(tài)方法,它直接通過類名調(diào)用,并返回一個新的bean實例;

在xml配置文件中,使用<bean>標簽定義bean實例,用factory-method屬性指定靜態(tài)工廠方法名稱

實例工廠方式是一個非靜態(tài)方法,它需要在已經(jīng)創(chuàng)建了工廠對象的基礎(chǔ)上,通過工廠對象來調(diào)用。

factory-bean指定已經(jīng)創(chuàng)建好的工廠bean的id,再使用factory-method屬性指定工廠方法的名稱

    <bean id="user" class="com.cc.entity.User" ></bean>
    <bean id="person" class="com.cc.entity.Person" factory-bean="user" factory-method="createObj"></bean>
public class User {
    public User createObj() {
        return new User();
    }
}
public class Main {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext a = new ClassPathXmlApplicationContext("test.xml");
        Object bean = a.getBean("person");
        System.out.println(bean);
    }
}

實現(xiàn)FactoryBean方式

通過這種方式創(chuàng)建對象,需要實現(xiàn)FactoryBean接口,并且實現(xiàn)它的方法,一般只需實現(xiàn)以下兩個方法:

T getObject() : 返回創(chuàng)建的對象的實例;

Class<?> getObjectType() : 返回創(chuàng)建的對象實例的類;

然后在Spring的配置文件中,將 FactoryBean實現(xiàn)類注冊為一個Bean。

public class User implements FactoryBean<Person> {
    @Override
    public Person getObject() throws Exception {
        return new Person();
    }
 
    @Override
    public Class<?> getObjectType() {
        return Person.class;
    }
}
<bean class="com.cc.entity.User" id="user"></bean>

以上就是Spring實例化對象的幾種常見方式的詳細內(nèi)容,更多關(guān)于Spring實例化對象的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

莆田市| 南平市| 嫩江县| 平江县| 洪泽县| 安国市| 民丰县| 阳高县| 利津县| 鹤岗市| 秭归县| 岳阳县| 安仁县| 涟源市| 盘山县| 阿克陶县| 海安县| 安图县| 霍州市| 剑河县| 大冶市| 新竹县| 尖扎县| 梁河县| 鸡东县| 林周县| 呼伦贝尔市| 奉贤区| 巴南区| 双辽市| 仁怀市| 潞城市| 固始县| 扬州市| 昂仁县| 扎兰屯市| 渝北区| 白沙| 巩留县| 苍梧县| 错那县|