- 引入依赖
-
- spring-context.jar
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.33</version>
</dependency>
- 导入配置文件
- spring.xml(任意文件名)
开启IOC服务(控制反转)
基于XML文件
- 通过bean标签将类纳入Srping容器管理
<bean id="student" class="权限定类名"/>
- Spring容器对象会将建好的Student对象以键值对的形式存储在容器内
- bean标签默认情况下要求Spring容器对象调用当前类的无参构造方法完成其实例对象的创建
- Spring容器对象在创建完毕后,自动完成了Student类对象创建,并不在getBean()的时候完成实例对象创建
- 一个Bean标签只能要求Spring容器对象创建指定类的一个实例对象,如果需要Spring容器对象创建多个指定类的对象,则需要声明多个bean标签
演示
<bean id="student" class="com.wry.bean.Student"/>
public void test01(){
//获取Spring容器对象,此时Spring容器将实例化所有被Spring管理的类,并以k-v形式储存
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
Student student = (Student) applicationContext.getBean("student");
student.sayHello("张三");//Hello,My name is张三
}
基于注解
- @component(value = "id")
-
- 表示这个类实例对象需要由Spring容器对象负责创建
- value属性指定当前对象在Spring容器内部的名称,value=可省略
- value属性可省略,默认id为当前对象名首字母小写
- 由@component修饰的类,必须有空参构造方法
- spring.xml配置文件中配置搜索范围
<!--组件扫描-->
context:componet-scan base-package="包名"/>
演示
<context:component-scan base-package="com.wry.bean"/>
@Component("student")//可省略("student")
public class Student {
private Integer sid;
private String sname;
。。。
}
public void test01(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
Student student = (Student) applicationContext.getBean("student");
student.sayHello("李四");//Hello,My name is李四
}
只能使用XML配置的情况
如果只有类文件的class,没有他的源文件,只能用XML方式将类注册到Spring容器中
<bean id="arrayList" class="java.util.ArrayList"/>
public void test01(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
List list = (ArrayList) applicationContext.getBean("arrayList");
System.out.println(list);//[]
}