spring是分层javaSE/JavaEE应用的full-stack轻量级开源框架。以IOC(控制反转)和AOP(面向切面编程)为内核的
其提供了展现层SpringMVC和持久层SpringJDBCTemplate以及业务逻辑层等众多企业级应用技术。
目前为止,是最受欢迎的JavaEE企业级应用的开源框架,整合了众多的第三方开源框架。
如:mybatis、springMVC等
spring发展历史 EJB,Spring的前身
1997年,由IBM提出的EJB思想
1998年,由SUN制定开发规范:EJB1.0
2006年,EJB3.0版本的发布
Spring之父,Rod Johnson
Expert One to One J2EE and Development(2002) 凸显出EJB的优点
Expert One to One J2EE and Development without EJB(2004) Spring框架的雏形
凸显出J2EE开发部使用EJB的解决方式
spring入门应用Test:测试
Core Container:核心容器
beans表示对象
Core:核心
Context:上下文对象
AOP:面向切面编程
Data Access : 数据库
MVC:视图展示
总结:
1、项目的创建
2、创建javabean
3、在pom.xml文件中导入依赖的坐标
4、创建spring框架的配置文件:applicationContext.xml
5、在配置文件中做相关操作
6、IOC测试
6.1、获取spring配置文件路径
6.2、调用getBean(),根据id获取对应的对象
6.3、通过对象调用对应的方法
spring入门流程图
scope:作用范围
prototype:每一次执行都会创建一个新的对象
singleton:如果对象已经存在,无论实例化多少次,使用的对象都是同一个对象 (只实例化一次)
springIOCIOC控制反转,将实例化的过程交给spring容器来做
IOC的选择方式 1、通过id获取对应的类对象
2、通过name获取对应的类对象
3、通过类获取类对象
注意:使用类获取类对象时,如果调用的在spring容器中存在多个,则会报错
DI依赖注入 本质:与IOC一致,强调了调用者和被调用者的关系
是Spring框架核心IOC的具体实现
在编写程序时,通过控制反转,将对象的创建交给了spring容器,但是代码中不可能出现没有依赖的情况,IOC解耦只是降低他们的依赖关系(耦合度),但不会清除(切断)。
那么这种业务层和持久层的依赖关系,在使用spring以后,就交给了spring来进行维护。
本质就是框架把持久层对象传入到业务层,而不需要我们自己去获取
设值注入:类似于java中的set方法
给需要注入的成员变量设置set方法
构造注入:类似于java中的构造方法
给需要注入的bean创建一个构造方法
注意:只是为了方便大家理解
注入的数据类型 1、基本属性的注入
2、引用类型的注入
3、集合属性的注入
配置文件的引入实际开发过程中,Spring的配置内容时非常多,这就导致了Spring框架配置很繁杂且体积大,所以,可以将部分配置拆解到其它配置文件中,而spring主配置文件中进行import导入即可。
总结 spring框架的配置
标签
id属性:在容器中Bean实例的唯一标识,不允许重复。
class属性:将要被实例化的bean的全限定名称
scope属性:Bean的作用范围,常用的是Singleton(默认)单例,prototype(实例)
标签:设值注入
name属性:对应的Bean中的属性名称
value属性:注入普通的属性值(对应javabean中的赋值操作)
ref属性:注入的对象引用值
标签
标签
标签:构造注入
标签:导入其它Spring的配置文件
Spring框架配置之数据源 引入数据坐标
com.oracle.database.jdbc ojdbc8 21.1.0.0
DBCP数据源的配置
引入maven坐标
commons-dbcp
commons-dbcp
1.4
在spring配置文件中配置数据源
C3p0数据源的配置
引入maven坐标
c3p0 c3p0 0.9.1.2
在spring配置文件中配置数据源
测试
public static void main(String[] args) {
ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
ComboPooledDataSource dataSource = (ComboPooledDataSource) app.getBean("dataSourceC3p0");
try {
Connection conn = dataSource.getConnection();
System.out.println(conn);
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void main01(String[] args) {
ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
BasicDataSource dataSource = (BasicDataSource) app.getBean("dataSourceDbcp");
try {
Connection conn = dataSource.getConnection();
System.out.println(conn);
} catch (SQLException e) {
e.printStackTrace();
}
}



