Spring中创建Bean对象的方式

准备工作

创建一个maven工程,创建一个包写一个UserService接口和接口实现类UserServiceImpl
在这里插入图片描述
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();
    }
}

运行结果:
在这里插入图片描述

二,实例工厂创建

  通过实例工厂来创建,我们先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>

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

猜你喜欢

转载自blog.csdn.net/qq_42494654/article/details/110942647