欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Spring中创建Bean对象的方式

程序员文章站 2022-07-05 20:02:19
具体有三种创建方式准备工作一,默认构造方法创建二,实例工厂创建三,静态工厂创建创建一个maven工程,创建一个包写一个UserService接口和接口实现类UserServiceImplUserService接口/** 保存用户接口* */public interface UserService { /* * 保存用户 * */ void saveUser();}UserService接口实现类/** 保存用户实现类* */public...

准备工作

创建一个maven工程,创建一个包写一个UserService接口和接口实现类UserServiceImpl
Spring中创建Bean对象的方式
UserService接口

/*
* 保存用户接口
* */
public interface UserService {
    /*
    * 保存用户
    * */
    void saveUser();
}

UserService接口实现类

/*
* 保存用户实现类
* */
public class UserServiceImpl implements UserService {

    public void saveUser() {
        System.out.println("saveUser方法执行了");
    }
}

pom文件引入的jar包和上一篇文章一样,可以参考上一章。

一,默认构造方法创建

  spring默认创建Bean的方式就是默认构造方法创建的,如果没有构造方法将无法创建我们只需在配置文件中配置如下,跟上一章springIoc入门案例配置相同。
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和class属性后,没有配置其他的属性和标签时,采用的就是
    默认构造方法创建实例,如果没有默认构造函数无法创建实例。
    -->
    <bean id="userService" class="com.zy.service.impl.UserServiceImpl"></bean>
</beans>

测试类:

public class TestDemo01 {
    public static void main(String[] args) {
        //加载配置文件
        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
        //根据bean标签的id获取实例对象
        UserService userService = (UserService) context.getBean("userService");
        //调用方法
        userService.saveUser();
    }
}

运行结果:
Spring中创建Bean对象的方式

二,实例工厂创建

  通过实例工厂来创建,我们先factory包下编写一个工厂类InstanceFactory ,写一个返回值为UserServiceImpl的createUserService()方法

public class InstanceFactory {
    /*
    * 我们模拟一个实例工厂
    * */
    public UserService createUserService(){
        //通过返回值 new UserServiceImpl
        return  new UserServiceImpl();
    }
}

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标签实例化工厂类,在通过factory-bean属性引用实例化的工厂
       factory-method属性配置工厂类中的方法
    -->
    <bean id="instanceFactory" class="com.zy.factory.InstanceFactory"></bean>
    <bean id="userService" factory-bean="instanceFactory" factory-method="createUserService"></bean>
</beans>

测试类和上面第一种默认构造方法的测试类相同。

三,静态工厂创建

  通过静态工厂来创建,我们先在factory包下编写一个名为staticFactory 工厂类,写一个返回值为UserServiceImpl的createUserService()方法并添加static关键字修饰。

public class staticFactory {
    /*
    * 我们模拟一个实例工厂
    * */
    public static UserService createUserService(){
        //通过返回值 new UserServiceImpl
        return  new UserServiceImpl();
    }
}

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="userService" class="com.zy.staticFactory.staticFactory" factory-method="createUserService"></bean>
</beans>

测试类和上面第一种默认构造方法的测试类相同。
加油吧少年

本文地址:https://blog.csdn.net/qq_42494654/article/details/110942647