Spring框架概述:
Spring框架是轻量级的开源JavaEE框架,可以解决企业应用开发的复杂性
Spring两个核心部分:IOC和AOP
(1)IOC:控制反转,把创建对象过程交给Spring进行管理
(2)AOP:面向切面,不修改源代码的情况下进行功能增强
Spring特点
- 方便解耦,简化开发
- AOP编程支持
- 方便程序进行测试
- 方便和其他框架进行整合
- 方便进行事物操作
- 降低API开发难度
一、IOC容器:
1、什么是IOC(控制反转)
- 把对象创建和对象之间的调用过程,交给Spring进行管理
- 使用IOC目的:为了降低耦合度
2、IOC底层
xml解析、工厂模式、反射
3、Spring提供的IOC容器实现的两种方式(两个接口)
- BeanFactory接口:IOC容器基本实现是Spring内部接口的使用接口,不提供给开发人员进行使用(加载配置文件时候不会创建对象,在获取对象时才会创建对象。)
- ApplicationContext接口:BeanFactory接口的子接口,提供更多更强大的功能,提供给开发人员使用(加载配置文件时候就会把在配置文件对象进行创建)
二、IOC容器-Bean管理:
1、IOC操作Bean管理
- Spring创建对象
- Spring注入属性
2、基于XML配置文件创建对象
- 使用bean标签,添加对应的属性就额可以实现对象创建
- id属性:唯一标识
- class属性:类全路径(包类路径)
- 创建对象,默认是执行无参构造方法
<!--Spring创建对象-->
<bean id="hello" class="cn.dao.impl.HelloImpl"></bean>
3、基于XML方式注入属性
- property完成属性注入
- name:类里面属性名称
- value:想属性注入的值
<!--Spring创建对象-->
<bean id="hello" class="cn.dao.impl.HelloImpl"></bean>
<!--Spring注入属性-->
<property name="bname" value="老人与海"></property>
<property name="bauthor" value="海明威"></property>
简单实例:
一、接口
package cn.dao;
public interface HelloDao {
public void sayHello();
}
二、接口实现类
package cn.dao.impl;
import cn.dao.HelloDao;
public class HelloImpl implements HelloDao {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public void sayHello() {
System.out.println("Hello "+name);
}
}
三、Spring.xml文件
<?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">
<bean id="hello" class="cn.dao.impl.HelloImpl">
<property name="name" value="李知恩"></property>
</bean>
</beans>
四、测试类
package cn.spring;
import cn.dao.HelloDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
test01();
}
public static void test01() {
// 创建Spring容器 需要填入配置文件的名称
ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
// 从IOC中获取Bean实例
HelloDao hello = ac.getBean("hello", HelloDao.class);
// 调用方法
hello.sayHello();
}
}
结果: