spring创建对象的步骤以及与正常new对象的对比

  1. 先创建接口
package com.bjpowernode.service;

public interface SomeService {

    void doSome();
}

  1. 再创建实现接口的类,并提供方法供检验
package com.bjpowernode.service.impl;

import com.bjpowernode.service.SomeService;

public class SomeServiceImpl implements SomeService {
    @Override
    public void doSome() {
        System.out.println("执行了SomeServiceImpl的doSome()方法");

    }
}

  1. 不用spring创建对象时
public class MyTest {
    @Test
    public void test01() {
        SomeService service = new SomeServiceImpl();
        service.doSome();
    }
  1. 使用spring时创建对象

4.1 创bean,就是告诉spring要创建某个类的对象

<?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">

    <!--告诉spring创建对象
        声明bean,就是告诉spring要创建某个类的对象
        id:对象的自定义名称,是唯一值。spring通过这个名称找到对象
        class:类的全限定名称(不能是接口,因为spring是反射机制创建对象。必须使用类)

        spring就完成 SomeService someService = new SomeServiceImpl();
        spring 是把创建好的对象放在map中,spring框架有一个map存放对象的。
            springMap.put(id的值,对象);
            例如:
            springMap.put("SomeService",new SomeServiceImpl());

            一个bean声明一个对象
    -->


    <bean id="someService" class="com.bjpowernode.service.impl.SomeServiceImpl"/>

    <!--id是给class起的名字-->


</beans>

补充说明1: ClassPathXmlApplicationContext方法中会读取beans.xml文件
从beans文件从上到下读取,当读取到bean标签时spring就会完成对象的创建工作
通过放射机制调用com.bjpowernode.service.impl.SomeServiceImpl类的构造方法创建对象,对象的名字叫id=“someService”
并把创建好的对象放在容器的map当中 -----springMap.put(id的值,对象);
例如:
springMap.put(“SomeService”,new SomeServiceImpl());
读取bean时 对象就已经创建好了
接着 SomeService service = (SomeService)ac.getBean(“someService”);
拿到对象赋给service(service就是spring帮我们创建好的对象)
[特别]:spring默认创建对象的时间:在创建spring的容器时,会创建配置文件中的所有的独象(有几个bean标签就调用几次无参构造函数,就创建几次对象)

补充说明2 1:从容器中获取某个对象,调用对象的方法getBean(“配置文件中的bean的id值”)
SomeService service = (SomeService)ac.getBean(“someService”);
2:怎么获取spring容器中java对象的信息

4.2 spring实现对象的创建

package com.bjpowernode;

import com.bjpowernode.service.SomeService;
import com.bjpowernode.service.impl.SomeServiceImpl;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyTest {
    @Test
    public void test01() {
        SomeService service = new SomeServiceImpl();
        service.doSome();
    }
    @Test
    public void test02(){
        //使用spring容器创建的对象
        //1指定spring配置文件的名称
        String config = "beans.xml";
        //2创建表示spring容器的对象,ApplicationContext(代表spring 通过他的对象就能用到里面的对象)
        //ApplicationContext就是表示Spring容器,通过容器获取对象了
        //ClassPathXmlApplicationContext:表示从类路径中加载spring的配置文件
        ApplicationContext ac = new ClassPathXmlApplicationContext(config);//执行这条语句是创建对象

        //从容器中获取某个对象,你要调用对象的方法
        //getBean("配置文件中的bean的id值")
        SomeService service = (SomeService)ac.getBean("someService");


        //使用spring创建好的对象
        service.doSome();
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值