从“0”开始,自学笔记(2)spring框架——终于不用new对象了

目录

一、spring环境修改

二、Bean对象底层实现(粗略)


一、spring环境修改

1、修改版本号,删掉多余服务

2、添加依赖

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>5.2.4.RELEASE</version>
</dependency>

 

 3、查看是否成功

4、编写类与测试方法

 5、创建资源目录

6、创建xxxx.xml文件,名字自定义,添加规范和bean

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="userService" class="com.wode.service.UserService"/>
    <bean id="userDao" class="com.wode.dao.UserDao"/>


</beans>

 

 7、编写main方法,并测试。

二、Bean对象底层实现(粗略)

以往我们都是使用new来新建一个对象,而我们现在为了简化java开发,减少耦合,springIOC就此应运而生。它使用一个Bean对象来解决这些问题。即只要创建对象,他不会在代码中随时去“new”一个,而是在bean中完成这个操作,这样就达成了易修改,减少耦合的目的。(非常粗略的一些想法,仅仅是为了便于理解,更深层次的问题,可以去查询相关博文等)

1、先创建一个maven项目,引入解析文件的dom4j(手写解析很麻烦,使用已经做好的jar吧)。pom.xml中添加dom4j依赖

<dependency>
  <groupId>dom4j</groupId>
  <artifactId>dom4j</artifactId>
  <version>1.6</version>
</dependency>

<dependency>
  <groupId>jaxen</groupId>
  <artifactId>jaxen</artifactId>
  <version>1.1.6</version>
</dependency>

2、编写测试对象UserService和UserDao和对应的test测试方法,

编写xxxx.xml文件(spring.xml),手写XML(不去官网复制规范)

<?xml version="1.0" encoding="UTF-8" ?>
<beans>
    <bean id="userService" class="com.wode.service.UserService"/>
    <bean id="userDao" class="com.wode.dao.UserDao"/>
</beans>

3、com.xxxx.po(po是新建的包)下新建一个MyBean类,用来存放bean标签中的id和class

4、新建一个factory包,在factory中新建一个生产Bean对象的工厂(接口Myfactor)

 其中Object是所有类的父类(java基础),所以创建的UserService类等都是Object的子类,相当于

Object object = new UserService();

当使用UserService对象时,需要强制转换成UserService类

5、创建一个MyClassPathXmlApplication来继承MyBean,相当于ApplicationContext,ApplicationContext也是继承BeanFactory的。

这里我们已经创建好了spring.xml文件,也写了返回对象的getBean方法,所以这里就需要让他们链接起来所以就需要:

                1、写一个方法,解析spring.xml,获得里面bean标签中的id和class,这里就用到创建的MyBean类了,使用它来接收数据,然后吧接收的数据储存到List<MyBean>中

                2、通过获得的class(类地址),实例化对象,并且储存到map中。然后实现getBean方法。

6、先创建一个List<MyBean>和Map<String,Object>。

7、写parselXml解析spring.xml文件

这里使用了dom4j解析spring.xml文件,使用xpath解析bean标签

private void parselXml(String fileName) {
    //获取解析器
    SAXReader saxReader = new SAXReader();
    //找到文件所在的url
    URL url = this.getClass().getClassLoader().getResource(fileName);
    //解析其配置文件请,返回Document对象
    try {
        Document document = saxReader.read(url);
        //通过xpath语法解析标签
        XPath xPath = document.createXPath("beans/bean");
        //通过xpath解析指定元素
        List<Element> elementList = xPath.selectNodes(document);
        //判断元素集合
        if(elementList!=null&&elementList.size()>0){
            //实例化结合
            beanList = new ArrayList<>();
            //遍历集合
            for (Element el:elementList){
                //获取元素的id属性值和class
                String id = el.attributeValue("id");
                String  clazz = el.attributeValue("class");
                //将idclass的值设置到mybean中
                MyBean myBean = new MyBean(id,clazz);
                //设置到集合
                beanList.add(myBean);
            }
        }
    } catch (DocumentException e) {
        e.printStackTrace();
    }


}

8、实例化对象

private void instanceBean() {
    //判断bean对的集合是否存在
    if (beanList!=null&&beanList.size()>0)
        //遍历
        for (MyBean bean:beanList){
            try {
                String id = bean.getId();
                //值(实例化好的对象)通过class属性值得到实例化对象
                Object object = Class.forName(bean.getClazz()).newInstance();
                //设置map
                beanMap.put(id,object);
            }catch (Exception e){
                e.printStackTrace();
            }

        }

}

9、创建带参构造方法,调用解析和实例化方法

public MyClassPathXmlApplication(String fileName) {
    //解析配置文件
    this.parselXml(fileName);
    //实例化bean对象
    this.instanceBean();
}

10、实现getBean方法

public Object getBean(String id) {
    return beanMap.get(id);
}

11、测试

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FPGA自学笔记——设计与验证JMB FPGA(可编程逻辑门阵列)是一种可编程的硬件平台,可以实现各种数字电路的设计与验证。本文将简要介绍使用FPGA自学设计与验证JMB(低功耗、高效能、集成度高的多媒体芯片)的过程。 首先,我们需要了解JMB的功能和特性。JMB是一种面向多媒体应用的芯片,具备低功耗、高效能和高集成度的优势。我们需要详细研究JMB的硬件架构和内部模块,包括处理器核、存储器模块、图像和音频处理模块等。 接下来,我们可以使用FPGA开发板来设计和验证JMB。首先,我们需要熟悉FPGA设计工具,例如Vivado或Quartus等。这些工具提供了图形化界面和硬件描述语言(HDL)等设计方法。我们可以使用HDL编写JMB的功能模块,并将其综合为FPGA可执行的位流文件。 在设计完成后,我们需要验证JMB的功能和性能。我们可以使用仿真工具(例如ModelSim或ISE Simulator)来模拟JMB在不同情况下的行为。通过设计测试程序并运行仿真,我们可以验证JMB的各个模块是否正确地工作,是否满足设计要求。 在验证完成后,我们可以将位流文件下载到FPGA开发板中进行智能芯片的物理实现和测试。通过与外部设备的连接以及相关测试程序的运行,我们可以验证JMB在实际硬件中的功能和性能。 总结起来,学习FPGA设计与验证JMB,我们需要熟悉JMB的硬件架构和内部模块,并使用FPGA开发工具进行设计与验证。通过仿真和物理实现测试,我们可以验证JMB的功能和性能。这些过程需要理论知识和实践经验的结合,希望这些笔记能够给你提供一些参考和指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值