Spring IOC
导入jar包
在maven中声明spring注解所依赖的jar包
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
</dependencies>
Bean实例化
1.直接实例化
2.工厂静态方法实例化
<bean id="user4" class="com.jundeng.pojo.StaticFactory" factory-method="getUser"/>
需在配置文件中指定工厂的类名与调用的方法。
3.工厂实例方法实例化
<bean id="dynamicFactory" class="com.jundeng.pojo.DynamicFactory"/>
<bean id="user5" factory-bean="dynamicFactory" factory-method="getUser"/>
先定义工厂,然后指定实列化该对象的工厂的id和方法。
DI(依赖注入)
1.setter注入
<!--setter注入-->
<bean id="userService1" class="com.jundeng.pojo.UserService">
<property name="user" ref="user1"/>
</bean>
setter注入的对象必须有无参构造函数
2.constructor注入
<!--constructor注入-->
<bean id="userService2" class="com.jundeng.pojo.UserService">
<constructor-arg name="user" ref="user2"/>
</bean>
3.对象内容器的注入
<bean id="container" class="com.jundeng.pojo.Container">
<property name="list">
<list>
<value>1</value>
<value>2</value>
<value>3</value>
</list>
</property>
<property name="map">
<map>
<entry key="1" value="a"></entry>
<entry key="2" value="b"></entry>
<entry key="3" value="c"></entry>
</map>
</property>
</bean>
p空间和c空间
p空间即setter注入,c空间即构造器注入, 是对写法上的简化。
<bean id="user1" class="com.jundeng.pojo.User" p:age="99" p:name="kobe" scope="prototype"/>
<bean id="user2" class="com.jundeng.pojo.User" c:age="22" c:name="curry"/>
分文件配置
可以在主配置文件中引入其它配置文件
当引入文件和当前文件有相同id的元素时,使用的被引入文件的对象
<import resource="ApplicationContext-DB.xml"/>
API
ApplicationContext 是BeanFactory的子类
其有以下常见实现类
- ClassPathXmlApplicationContext: 从类根路径下加载配置文件,只需写文件名即可
- FileSystemXmlApplicationContext:通过磁盘路径上加载,配置文件可以在磁盘的任意位置,需要写磁盘绝对路径
- AnnotationConfigApplicationContext:使用注解配置容器对象是,需要通过此类创建spring容器
获取Bean可以通过id也可以通过class,通过class获取时要确保容器中只能有一个该类型对象。