一:spring的概念
1.1:spring是一个开源的轻量级的框架
1.2:spring的核心主要有两部分:
1.2.1:aop:面向切面编程
1.2.2:ioc:控制反转(就是实例化不是new出来,而是交给spring配置创建)
1.3:spring是一站式的框架:
1.3.1:spring在Javaee三层结构中,每一层都提供不同的解决技术
web层:有springMVC技术
service层:spring的ioc的技术
dao层:spring的jdbcTempalte
二:Spring的ioc操作:
就是对象的创建交给Spring进行操作,创建对象有两种方式 ioc的配置文件方式、ioc的注解方式
2.1:ioc的底层原理是应用 xml配置文件、dom4j、工厂设计模式、反射........等技术来实现功能
2.2:ioc入门案例:
2.2.1:第一步:导包 .........
2.2.2:第二步:创建类,在类里面创建方法
2.2.3:第三步:创建Spring配置文件,配置创建类
(1)Spring的核心配置文件名称和位置不是固定的,建议放到src下面,
官方建议名称 是applicationContex.xml,但是名称可以随意写
(2)在配置文件中引入schema约束
(3)配置对象创建(这里xml(就是配置文件方式)配置)
(4):测试代码(只是单独使用Spring的时候使用)
三:Spring的bean的管理(xml方式)
就是通过配置文件方式创建对象。
3.1: bean实例化的方式
(1) 第一种:使用类的无参数构造(重点)
这种方式实例化对象,就是通过反射找无参构造,所以无参构造是必须的
(2):使用静态工厂创建
创建静态方法,返回类对象
在配置文件中
3.2:bean标签常用的属性
(1)id属性:起名称,随意起,id属性值,不能包含特殊符号
根据id值得到匹配的对象
(2)class属性:创建对象所在类的全路径
(3)name属性:和id属性一样,id属性值不包括特殊符号,但是name属性值可以包含特殊符号
(4)scope属性: singleton:默认值,单实例
prototype:多实例(因为struts2的Action是多实例)
四:属性注入:
4.1:创建对象时候,向类里的属性里面设置值
4.2:属性注入的方式介绍(三种方式)
(1):使用set方法注入()
(2):使用有参数的构造方法注入
(3):使用接口注入
4.3:在Spring框架里面,支持前两种方式
(1):set方法注入(重点)
(2):有参数构造注入
4.3.1:使用有参数构造注入属性
4.3.2:使用set方法注入属性(重点)
五:注入对象类型属性(重点)
需求:在service中得到dao对象
5.1:实现过程
5.1.1:在service里面把dao作为类型
5.1.2:在service中生成dao类型属性的set方法
5.1.3:配置文件中注入关系
5.2:P名称空间注入
(1) 在约束上面引入P名称空间的路径
(2)在配置
六:注入复杂类型属性
数组、list集合、map集合、properties
七:IOC和DI区别
(1)IOC:是控制反转,把对象创建交给Spring进行配置
(2)DI:依赖注入,向类里面的属性中设置值
(3)关系:依赖注入不能单独存在,需要在IOC基础之上完成操作
八:Spring的bean管理(注解方式)重要现在用的多
8.1: 注解开发准备,导包
8.2:创建类,创建方法
8.3:创建Spring配置文件,引入约束(注解约束...)
8.4:注解开发就得,开启注解扫描
8.5:注解创建对象
8.5.1:在创建对象的类上面使用注解实现
8.5.2:在测试类中写如下代码,看是否创建对象成功。
8.6:创建对象有四个注解(目前这几个的功能都一样,都是创建对象)
@Component
@Controller
@Service
@Repository
8.7:创建对象是单实例还是多实例
Scope:singleton是单实例
prototype是多实例
8.8:注解注入属性:
需求:在service中得到dao对象
(1)创建dao和service对象
(2)在service类里面定义dao'类型的属性
注入对象属性第一个 注解 @Autowired
注入对象属性第二个 注解 @Resource(常用,因为这个可以注明对象名)
8.9:一般开发都是配置文件和注解混合使用
创建对象使用配置文件方式
注入属性使用注解方式实现
九:AOP
9.1:aop:面向切面编程
9.2:采取横向抽取机制
9.3:AOP操作术语
(1):切入点:就是实际增强的方法
(2):通知/增强:增强的逻辑,例如:扩展日志功能,日志功能称为增强
(3):切面:把增强用到具体的方法上面,就是把增强用到切入点上
9.4:Aop操作
(1):导相关包
(2):创建Spring核心配置文件,导入aop的约束
(3):使用表达式配置切入点
常用的表达式:
execution(<访问修饰符>?<返回类型><方法名>(<参数>)<异常>)
例如:(1) execution(* cn.itcast.aop.Book.add(..))
(2)execution(* cn.itcast.aop.Book.*(..))
(3)execution(* *.*(..))
(4):AOP操作案例
Spring整合web项目
每次访问Action的时候,都会加载Spring配置文件,耗费资源
解决方案:
在服务器启动的时候 创建对象加载配置文件 ,
在Spring里面不需要我们自己代码实现,Spring已经封装好了,只需要配置就可以完成加载Spring配置文件在服务器启动时候。
只需要配置一个监听器
这样得指定Spring核心配置文件的位置,(因为默认找到官方要求的.....)
十:基于aspectj的注解aop操作
10.1:创建对象
10.2:在Spring核心配置文件中,开启aop操作
10.3:在增强类上面使用注解完成aop操作
十一:Spring的jdbcTemplate操作
11.1 : 因为Spring是一站式框架,所以针对每一层都有解决技术
(1):dao层,使用jdbcTemplate
jdbcTemplate 就是对jdbc的封装
11.2:使用jdbcTemplate实现功能
(1)导包(2)创建对象(3)创建jdbcTemplate对象,设置数据源(4)调用jdbcTemplate对象中的方法实现操作
11.2.1:增加.....修改.....删除.....
11.2.2:查询
(1):查询返回多少条数据
(2):查询返回对象
(3)查询返回list集合
十二:Spring配置连接池和dao使用jdbcTemplate
12.1:Spring配置c3p0连接池
12.1.1:导包
12.1.2:创建Spring配置文件,配置连接池
下面这是c3p0连接池的原始用法
下面是c3p0在配置文件中用法
12.2:dao中使用jdbcTemplate
12.2.1:创建service和dao类,在配置文件中创建对象,在service中注入dao对象
12.2.2:创建jdbcTemplate对象,把模板对象注入到dao对象里面
12.2.3:在jdbcTemplate对象中注入dDataSource
十三:Spring事物管理api
13.1:Spring事务管理方式
声明式事物管理
(1):基于xml配置文件实现
(2):基于注解实现
13.2:声明式事物管理(xml配置)
配置文件方式使用aop思想配置
13.2.1:配置事务管理器:
13.2.2:配置事物增强
13.2.3:配置切面
13.:3:声明式事物管理(注解)简单常用
13.3.1:配置事物管理器
13.3.2:配置事物注解(就是开启注解扫描)
13.3.3:在要使用事务的方法所在的类上面添加注解