Spring创建对象的时机
String config = "beans.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(config);
读到这一行的时候,Spring跳转到配置文件去获取类信息
<bean id= "someService" class = "类路径"/>
//id一般是开头小写的类名,对应类名开头大写
//<bean id ="someService" class = "上面的类路径">
//这样的语法可以从同一个类中简单地创建多个对象
读取这个<Bean>的时候,对象就被生成了,之后就可以用getBean来获取生成的对象了。
spring默认创建对象的时机:在创建Spring的容器时,会创建配置文件中所有的对象。
获取容器中Spring对象的信息
package course01;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class prepareForTest {
public static void test01() {
String config = "beans.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(config);
//使用Spring提供的方法,来获取容器中定义的对象数量
int nums = ac.getBeanDefinitionCount();
System.out.println("容器中定义对象的数量"+nums);
//容器中每个定义的对象名称
String names[] = ac.getBeanDefinitionNames();
for (String str: names
) {
System.out.println(str);
}
}
}
上面展示了获取对象数量和对象名称(字符串数组类型)的api
Spring创建非自定义类的对象?
可以在bean里面配置非自定义类的对象,同样是识别id加上全类名
di实现
DI的实现有两种:
1在Spring的配置文件中,使用标签和属性完成,叫做基于xml的di实现
2使用Spring的注解完成属性赋值,叫做基于注解的di实现
DI:依赖注入
bean实例在调用无参构造器创建对象后,就要对bean对象的属性进行初始化。初始化是由容器自动完成的,称为注入。
IoC操作Bean管理
1)Spring对象创建
2)Spring注入属性
语法分类
根据注入方式的不同,常用的有两类:Set注入,构造注入
set注入(需掌握):
set注入也叫作设值注入,是指,通过setter方法传入被调用者的实例,这种注入方式简单,至关,因而在Spring的依赖注入中大量使用。
构造注入: Spring调用类的有参构造方法,构造对象。在方法中完成赋值
创建Junit测试类的方法
先导入Junit包,一般习惯在src同级目录下加test目录,在需要的方法前加@Test
用无参构造创建基础对象,如果创建了构造函数,需要重新声明无参构造,不然就无法使用
set注入
通过setter方法进行属性注入
<bean id="book" class="com.study.lele.Bean.BookSetTesting">
<!--
做法:在bean标签里面使用Property标签完成属性注入
name:类里面的属性名称
value:注入的属性值
-->
<property name="bauthor" value="小蕾是天使"></property>
<property name="bname" value="平平"></property>
</bean>
测试
@Test
public void test01(){
String config = "bean.xml";
ApplicationContext context = new ClassPathXmlApplicationContext(config);
BookSetTesting book = (BookSetTesting) context.getBean("book");
System.out.println(book