1 spring 是开元的轻量级框架
2 spring核心主要两部分
(1)aop:面向切面编程,扩张功能不是修改源代码实现
(2)ioc:控制反转,比如有一个类,在类里面有方法(不是静态方法),调用类里面的方法,创建类的对象,使用对象调用方法,创建类对象的过程,需要new出来对象。
把对象的创建不是通过new方式实现,而是交给spring配置创建类对象
3 spring是一站式框架
(1)spring在javaee三层结构中,每一层都提供不同的解决技术。
web层:springMVC
service层:spring的ioc
dao层:spring的jdbcTemplate
4 spring版本
(1)hibernate5.x
(2)spring4.x
Spring的ioc操作
1 把对象的创建交给spring进行管理
2 ioc操作两部分:
(1)ioc的配置文件方式
(2)ioc的注解方式
IOC底层原理
1 ioc底层原理使用技术
(1)xml配置文件
(2)dom4j解析xml
(3)工厂设计模式
(4)反射
2 画图分析 ioc实现原理
ioc原理
IOC入门案例
第一步 导入jar包
(1)解压资料zip文件
Jar特点:都有三个jar包,基本架包、文档、源架包
(2)做spring最基本功能时候,导入四个核心jar包就可以了。
(3)导入支持日志输出的jar包
第二步 创建类,在类里面创建方法
package cn.itcast.ioc;
public class User {
public void add() {
System.out.println("add>>>>>");
}
public static void main(String[] args) {
//原始做法
User user=new User();
user.add();
}
}
第三步 创建spring配置文件,配置创建类
(1)spring核心配置文件名称和位置不是固定的
-建议放到src下面,名称没有要求,官方建议applicationContext.xml
(2)引入schema约束
\spring-framework-4.2.4.RELEASE\docs\spring-framework-reference\htmlxsd-configuration.html
<?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">
</beans>
(3)配置对象创建
第四步 写代码测试对象创建
(1)这段代码在测试中使用
@Test
public void testUser() {
//1加载spring配置文件,根据创建对象
ApplicationContext context=new ClassPathXmlApplicationContext("bean1.xml");
//2得到配置创建的对象
User user=(User) context.getBean("user");
System.out.println(user);
user.add();
}
配置文件没有提示问题
1 spring引入schema约束,把约束文件引入到eclipse中,
(1)复制约束路径
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
![](https://i-blog.csdnimg.cn/blog_migrate/f75b8df25af334b525d6f38e731cc43e.png)
Spring的bean管理(xml方式)
Bean实例化的方式
1 在spring里面通过配置文件创建对象
2 bean实例化三种方式实现
第一种 使用类的无参数构造创建(常用)
<!-- ioc入门 -->
<bean id="user" class="cn.itcast.ioc.User"></bean>
类里面没有无参数的构造,出现异常。
第二种 使用静态工厂创建
(1)创建静态的方法,返回类对象。
<!-- 使用静态工厂创建对象 -->
<bean id="bean2" class="cn.itcast.bean.Bean2Factory" factory-method="getBean2"></bean>
@Test
public void testUser() {
//1加载spring配置文件,根据创建对象
ApplicationContext context=new ClassPathXmlApplicationContext("bean1.xml");
//2得到配置创建的对象
Bean2 bean2=(Bean2) context.getBean("bean2");
System.out.println(bean2);
}
package cn.itcast.bean;
public class Bean2Factory {
//静态的方法,返回Bean2对象
public static Bean2 getBean2() {
return new Bean2();
}
}
第三种 使用实例工厂创建
(1)创建不是静态的方法,返回类对象。
<!-- 使用实例工厂创建对象 -->
<!-- 创建工厂对象 -->
<bean id="bean3Factory" class="cn.itcast.bean.Bean3Factory"></bean>
<bean id="bean3" class="bean3Factory" factory-method="getBean3"></bean>