Spring中创建Bean对象的方式
程序员文章站
2022-07-05 20:02:19
具体有三种创建方式准备工作一,默认构造方法创建二,实例工厂创建三,静态工厂创建创建一个maven工程,创建一个包写一个UserService接口和接口实现类UserServiceImplUserService接口/** 保存用户接口* */public interface UserService { /* * 保存用户 * */ void saveUser();}UserService接口实现类/** 保存用户实现类* */public...
具体有三种创建方式
准备工作
创建一个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>
测试类和上面第一种默认构造方法的测试类相同。
加油吧少年
本文地址:https://blog.csdn.net/qq_42494654/article/details/110942647