框架=jar包+配置文件
Spring::技术栈“全家桶”,包括SpringFramework,SpringBoot,SpringMVC等…
SpringFramework核心功能:(1)核心容器(2)面向切面编程(3)事务管理(4)SpringMVC
ClassPathXmlApplicationContext:配置文件时XML格式;项目的类路径下resourses
WebApplicationContext:web项目对应的ioc容器
IoC 控制反转:创建对象的权利交给Spring
DI 依赖注入
IoC/DI实现步骤:
1、配置元数据
2、创建 Ioc容器
3、获取bean
基于XML配置方式的组件管理
<!--
<bean>对应一个组件对象,id是组件唯一标识,class是组件的类限定符
-->
<bean id="HappyComponent" class="org.example.HappyComponent"></bean>
<!--
静态工厂ioc配置
factory-method:静态工厂方法
实例方法必须static
-->
<bean id="client" class="org.example.ClientService" factory-method="creatInstance"></bean>
<!--
实例工场方法实例化:1、配置工厂类的组件细信息
2、指定非静态工厂对象和方法名
-->
<bean id="defaultclent" class="org.example.DefaultServicesLocator" ></bean>
<bean id="client" factory-bean="defaultclent" factory-method="creatClientServicesInstance"></bean>
di配置
<!--
单个参数注入
value:直接属性值
ref:、引用其他的bean
-->
<bean id="userDao" class="ioc_02.UserDao"></bean>
<bean id="userServices" class="ioc_02.UserServices">
<constructor-arg ref="userDao"></constructor-arg>
</bean>
<!--
多个参数注入
value:直接属性值
ref:引用其他的bean
-->
<bean id="userService1" class="ioc_02.UserServices">
<constructor-arg name="age" value="18"></constructor-arg>
<constructor-arg name="name" value="二狗子"></constructor-arg>
<constructor-arg name="userDao" value="userDao"></constructor-arg>
</bean>
<!--setter方法注入-->
<bean id="movieFinder" class="ioc_02.MovieFinder"></bean>
<bean id="simpleMovieLister" class="ioc_02.SimpleMovieLister">
<property name="movieName" value="小明"></property>
<property name="movieFinder " ref="movieFinder"></property>
</bean>