当前位置: 首页 > article >正文

Factory快速入门

传统JAVAweb开发层与层之间太过紧密,new的对象太多。使用仓库会增强事务的功能,第三方增强。
IoC,DI和AOP思想的提出:
IoC思想:传统的第三方,需要自己创建Bean对象,需要使用的时候通过get,set方法调用,IoC思想为控制反转,Bean对象由第三方控制,需要使用的时候通过第三方去调用
DI思想:依赖注入,强调Bean之间的关系,由第三方负责
Aop思想:面向切面编程:功能的横向抽取,主要的实现方式是Proxy

软件的框架也是半成品,抽取为一个大概框架。基于基础技术之上,是一个半成品,使用大量的设计模式,算法,具备扩展性。

BaenFactory开发步骤:
1.导入Spring的jar包或maven坐标
2.编写UserService接口以及UserServiceImpl实现类
3.创建beans.xml文件,将UserServiceImpl的信息配置到该xml文件中。
4.编写测试代码,创建BeanFactory,加载配置文件,获取UserService实例对象

以下是实例代码:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>SpringTest</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.7</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.3.7</version>  <!-- 使用适合你的 Spring 版本 -->
        </dependency>

    </dependencies>

</project>

<?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.zzz.service.impl.UserServiceImpl">

    </bean>
</beans>
package com.zzz.test;

import com.zzz.service.UserService;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.core.io.ClassPathResource;

import java.util.zip.Deflater;

public class BeanFactoryTest {
    public static void main(String[] args) {
        //创建工厂对象
        DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
        //创建读取器
        XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
        //将工厂与读取器绑定
        reader.loadBeanDefinitions("beans.xml");
        //根据id获取Bean实例对象
        UserService userService =(UserService)beanFactory.getBean("userService");
        System.out.println(userService);
    }
}

以上可见,只需要在Beans.xml文件中配置bean文件就可以通过第三方工厂获取到bean文件

步骤汇总:
1.创建User接口类,创建实现对象
2.在beans.xml文件中将接口文件写入,配置bean文件
3.实例化测试,通过id查找输出。
在test测试文档中,,有以下几个步骤:
1.创建工厂对象:
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
2.创建读取器:
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
3.将工厂与读取器绑定:
reader.loadBeanDefinitions(“beans.xml”);
这是spring开发三板斧
接下来就可以通过id获取Bean实例对象:通过BeanFactory的getBean方法:
UserService userService =(UserService)beanFactory.getBean(“userService”);
类型通过Bean接口类进行强转。

打印的时候,还有一种方法,叫做注入:在实现类中写,可从BeanFactory中调用该方法:
public class UserServiceImpl implements UserService {
public void setUserDao(UserDao userDao) {
System.out.println(“这儿打印了”+userDao);
}
}
同时,需要在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.zzz.service.impl.UserServiceImpl">
<property name="userDao" ref="UserDao"><!--配置注入-->

</property>
    </bean>

    <!--配置UserDaoImpl-->
    <bean id="UserDao" class="dao.UserDaoImpl">

    </bean>
</beans>

http://www.kler.cn/a/399469.html

相关文章:

  • Vue模块化开发的理解
  • vs2022搭建opencv开发环境
  • C语言项⽬实践-贪吃蛇
  • 【Fargo】23:采集时间转rtp时间
  • Docker:查看镜像里的文件
  • 蓝桥杯介绍
  • 超详细:索引介绍(易懂!)
  • React--》如何高效管理前端环境变量:开发与生产环境配置详解
  • 阿里云MYSQL调优之慢查询
  • 刘艳兵-DBA036-Oracle数据库中的触发器(Trigger)可以在以下哪种情况下自动执行?
  • 策略模式、状态机详细解读
  • 力扣 LeetCode 94. 二叉树的中序遍历(Day6:二叉树)
  • 【SPIE出版,EI稳定检索】2024年信号处理与神经网络应用国际学术会议(SPNNA 2024,12月13-15日)
  • ES6进阶知识二
  • 2024山西省网络建设运维第十八届职业院校技能大赛解析答案(6. iscsi 服务)
  • pybullet简介及简单使用
  • lambda 表达式与mutable
  • 【Golang】——Gin 框架中的模板渲染详解
  • 省级金融发展水平数据(2000-2022年)
  • hive中windows子句的使用
  • UEFI学习笔记(十六):edk2子目录常用驱动介绍
  • Redis 内存管理
  • UNIX网络编程-TCP套接字编程(实战)
  • Amazon Web Services (AWS)
  • Linux第四讲:Git gdb
  • 数学建模问题攻略指南