1、先是创建一个bean.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
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--
告诉spring创建对象
声明备案,就是告诉spring创建某个类的对象
id:对象的自定义名称,唯一值,spring通过这个名称找到对象,必须使用类
class:类的权限名称,(不能是接口,因为spring是反射机制创建对象,必须使用类)
spring就完成了, SomeService service = new SomeServiceImpl();
spring把创建好的对象放入到map中,spring框架有一个map存放对象。
springmap.map(id的值,对象)
例如 springmap.map("someservice",new SomeServiceImpl());
一个bean标签声明一个对象
-->
<bean id="someservice" class="cn.qiang.service.impl.SomeServiceImpl"></bean>
<bean id="someservice1" class="cn.qiang.service.impl.SomeServiceImpl"></bean>
<!--
spring 能创建一个非自定义的对象吗,创建一个存在的某个类的对象
-->
<bean id="mydate" class="java.util.Date"></bean>
</beans>
<!--spring 的配置文件-->
<!--1、beans:是根标签,spring吧Java对象称为beans-->
<!--2.spring-beans.xsd是约束文件,和mybatis指定的的态度是一样的-->
2、创建一个接口和他的实现类
SomeService接口
package cn.qiang.service;
public interface SomeService {
void dosome();
}
SomeServiceImpl接口的实现类
package cn.qiang.service.impl;
import cn.qiang.service.SomeService;
public class SomeServiceImpl implements SomeService {
@Override
public void dosome() {
System.out.println("执行了SomeService的doSome()方法");
}
public SomeServiceImpl() {
System.out.println("SomeServiceImpl的无参数构造");
}
}
3、测试类
package com.qiang;
import cn.qiang.service.SomeService;
import cn.qiang.service.impl.SomeServiceImpl;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.Date;
public class MyTest {
@Test
public void test01(){
SomeService service = new SomeServiceImpl();
service.dosome();
}
/**
* spring 默认创建对象的时间:在创建spring容器的时候,会创建配置文件中的所有对象
* spring 创建对象:默认调用的是无参数构造方法
*/
@Test
public void test02(){
//使用spring容器创建的对象,
//指定spring配置文件的名称
String config="beans.xml";
//创建表示spring容器的对象,ApplicationContext
//ApplicationContext就是表示spring容器,通过容器获取对象了
//ClassPathXmlApplicationContext:表示从类路径中加载spring的配置文件
ApplicationContext ac = new ClassPathXmlApplicationContext(config);
//从容器中获取某个对象,你要调用对象的方法
//getBean("配置文件中的bean的id值")
SomeService service = (SomeService) ac.getBean("someservice");
//使用spring创建好的对象
service.dosome();
}
/**
* 获取搜ring容器中的Java对象的信息
*/
@Test
public void test03(){
String config="beans.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(config);
//使用Spring容器提供的方法,获取容器中定义的对象的数量
int nums = ac.getBeanDefinitionCount();
System.out.println("容器中定义对象的数量:"+nums);
//容器中每个定义的对象的名称
String[] names = ac.getBeanDefinitionNames();
for (String name:names
) {
System.out.println(name);
}
}
@Test
public void test04(){
String config = "beans.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(config);
//使用getbean();
Date my = (Date) ac.getBean("mydate");
System.out.println("Date:"+my);
}
}