Spring作用
管理项目,简化开发,降低程序耦合度。
设计思路:践行工厂模式,打造一个工厂,通过工厂对项目的管理。
导入依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.3.6.RELEASE</version>
</dependency>
配置文件:(位置:resources目录下)
<?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 生产的组件 -->
<!-- id="组件标识" class="组件类型" -->
<bean id="userDAO" class="com.dao.UserDAOImpl"></bean>
</beans>
启动工厂:
// 启动工厂,注意:需要指定配置文件位置
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
// 从工厂中获取 标识为"userDAO"的组件
UserDAO userDAO = (UserDAO)context.getBean("userDAO")
IOC:控制反转
这是一种思想,由我们主动去new对象,变为我们被动的去接收工厂创建的对象。(这就是控制反转)
解决了具有依赖关系组件之间的强耦合,使项目更加稳健。
DI:依赖注入
这是控制反转的具体实现手段。由工厂为我们推送值。
依赖注入的几种方式:Set注入 构造器注入 自动注入
set注入 顾名思义,属性必须由set赋值方法。
<!--在applicationContext.xml写如下配置-->
<bean id="addressDao" class="com.qf.pojo.Address">
<property name="city" value="北京"></property>
</bean>
<bean id="setUser" class="com.qf.pojo.User">
<!-- 引用数据类型 ref对应上面创建的address对象id-->
<property name="address" ref="addressDao"></property>
<!-- 简单数据类型的赋值方法-->
<!-- name 属性 value 赋值-->
<property name="id" value="1"></property>
<property name="name" value="张三"></property>
<property name="gender" value="true"></property>
<!-- list集合赋值方法 -->
<property name="list">
<list>
<value>1</value>
<value>2</value>
<value>3</value>
</list>
</property>
<!-- set集合赋值方法-->
<property name="set">
<set>
<value>one</value>
<value>two</value>
<value>three</value>
</set>
</property>
<!-- map赋值方法-->
<property name="map">
<map>
<entry key="one" value="1"></entry>
<entry key="two" value="2"></entry>
<entry key="three" value="3"></entry>
</map>
</property>
</bean>
构造注入
<bean id="address" class="com.qf.pojo.Address">
<!-- 构造器注入-->
<constructor-arg index="0" value="上海"></constructor-arg>
</bean>