1、 spring是开源框架
2、 spring核心部分
a) aop:面向切面的编程,扩展一个功能,不修改代码
b) ioc:控制反转,把对象的创建不是通过new方式实现,而是交给spring配置创建类的对象
3、 spring是一站式框架
a) spring在javaee三层结构中,每一层都提供不同的解决技术
i. web层:springMVC
ii. service层:spring的ioc
iii. dao层:spring的jdbcTemplate
4、 spring版本
spring4.x
1、 把对象的创建交给spring处理
2、 Ioc的操作两部分
a) Ioc的配置文件方式
b) Ioc的注解方式
1、 ioc底层原理使用技术
a) xml配置文件
b) dom4j解决xml
c) 工厂设计模式
d) 反射
2、 开发中的一种思想:
高内聚,低耦合。
3、 Ioc的原理及使用
a) 创建xml文件,配置要创建的对象类
<bean id=”userService”class=”com.william.UserService”>
b) 创建工厂类,使用dom4j解析配置文件+反射
Public class UserFactory{
//返回UserService对象的方法
Public static UserServlice getService(){
//1使用dom4j解析xml文件
//根据id值,得到对应的class属性值
String classValue=”classvalue”;
//利用反射创建类的对象
Class clazz=Class.forName(classValue);
//创建类的对象
UserService service=clazz.newInstance();
Return service;
}
}
c) 在Servlet中得到UserService的对象
Public class UserServlet{
UserFactory.geyService();
}
1、 导入jar包
a) Jar包特点:
i. Jar包
ii. 文档
iii. 源代码
b) 基础开发只需要4个部分:(Beans、Core、Context、SpEl)
i. spring-beans-3.2.4.RELEASE.jar
ii. spring-core-3.2.4.RELEASE.jar
iii. spring-expression-3.2.4.RELEASE.jar
iv. spring-context-3.2.4.RELEASE.jar
c) 支持日志输出的jar包
i. commons-logging-1.1.1.jar
ii. dom4j-1.6.1.jar
2、 创建类,创建一个方法
3、 创建Spring一个配置文件,配置创建类
a) Spring 核心的配置文件名称和位置不是固定的
建议放到src下,官方建议为applicationnContext.xml
b) 引入schema约束
c) 配置对象
4、 写代码测试对象创建
测试代码(仅供测试使用)
spring引入schema约束,把约束文件引入到eclipse中;
a) 复制约束路径:
b) 快捷约束方式:
在有网的地方将所有用到的约束写入配置文件
1、 在spring里面通过配置文件创建对象
2、 Bean实例化三种方式实现
a) 使用类的无参数构造器(常用)
实体类里若没有实体类,会出现以下异常:
b) 使用静态工厂创建
创建静态方法,返回类的对象
c) 使用实例化工厂创建
创建一个不是静态的方法,返回类对象
1、 id属性:其名称,id属性值名称任意命名
-id属性值,不能包含特殊符号,
-根据id值得到配置对象
2、 class属性:创建对象所在类的全路径
3、 name属性:功能和id功能一样的,但是name属性值可以包含特殊符合
4、 scope属性:bean的作用范围
a) singleton:默认值,单例的;
b) prototype:多例的;
c) request:web项目中,Spring创建一个Bean对象,将对象存入到request域中;
d) session:web项目中,Spring创建一个Bean对象,将对象存入到session域中;
e) globalSession:web项目中,应用在Prolet环境,如果没有Prolet环境,那么globalSession相当于session;
1、 创建对象的时候,向类的属性里面设置值
2、 属性注入方式的介绍(三种方式)
a) 使用set方法注入
Public class User{
PrivateString name;
Public void setname(String name){
This.name=name;
}
}
User user=new User();
User.setName(“abcd”);
b) 用有参构造器注入
Public class User{
PrivateString name;
PublicUser(String name){
This.name=name;
}
}
User user=new User(“Lucy”);
c) 使用接口注入
Public interface Dao{
Publicvoid delete(String name);
}
Public class DaoImpl implements Dao{
Publicvoid delete (String name){
This.name=name;
}
}
3、 在Spring中仅支持前两种注入
1、 加入创建一个service类和dao类
a) 在service里面得到dao对象
2、 具体实现过程
a) 在service里面把dao作为类型属性
b) 生成dao类型属性的set方法
c) 配置文件中完成注入关系
1、 IOC:控制反转,把对象创建交给Spring进行配置
2、 DI:依赖注入,向类里面的属性设置值
3、 两者之间的关系:DI(依赖注入)不能单独存在,需要在IOC(控制反转)基础上完成操作
1、 加载核心配置文件
a) New 对象,功能可以实现,效率很低
2、 实现思想:把加载配置文件和创建对象的过程,在服务器启动的时候完成
3、 实现原理
a) ServletContext对象
b) 监听器
c) 具体使用:
i. 在服务器启动时,为每个项目创建一个ServletContext对象
ii. 在ServletContext对象创建时,使用监听器可以具体到ServletContext对象在什么时候创建
iii. 使用监听器监听到ServletContext对象创建的时候
iv. 加载srping配置文件,把文件配置对象创建
v. 把创建出来的对象放到ServletContext域对象里面setAttribute方法
获取对象的时候,到ServletContext域得到getAttribute方法