一、需要引入哪些依赖
1. spring-context: spring的核心依赖
2. spring-jdbc: JdbcTemplate、包含DriverManagerDataSource连接池、事务管理者DataSourceTransactionManager等等
3. spring-test: spring整合Junit
4. aspectjweaver: spring的aop需要的依赖
5. mybatis-spring: mybatis整合spring的依赖
6. log相关的依赖
二、IOC和依赖注入(最核心的)
1. 在spring的全局的配置文件中,进行包扫描
2. IOC的相关注解:
2.1 Controller 使用控制器上
2.2 Service 使用在业务类上
2.3 Repository(以后不会用) 使用在Dao的实现类上
2.4 Component 使用在其它需要进行IOC的类上
3. 依赖注入相关的注解:
3.1 Autowired
3.2 Resource
3.3 Value
4. 原则:
4.1 自己写的类,使用注解的方式进行IOC,它的属性就使用注解的方式进行依赖注入
4.2 第三方的类,使用配置文件的方式进行IOC,它的属性就使用配置文件的方式进行依赖注入
5. 如果我想对第三方的类使用注解方式进行IOC:(以后SpringBoot会这样用)
1. 在配置类中编写一个公有方法,该方法的返回值是需要进行IOC的类的类型,在这个方法里面就创建一个该类型的对象返回
2. 在该方法上加上Bean注解
三、Spring整合mybatis
1. 我可以不写mybatis的核心配置文件
2. 在spring的配置文件中配置DataSource:既可以配置spring内置DriverManagerDataSource也可以配置第三方的DataSource
3. 在spring的配置文件中配置SqlSessionFactoryBean,并且将dataSource注入进去,可能还需要注入"需要配置别名的包"
4. 在spring的配置文件中配置MapperScannerConfigurer,并且注入要扫描的包名"basePackage"
四、spring整合Junit: 不用我们自己创建核心容器
1. 注意:junit的版本必须是4.12以及以上
2. 在测试类上添加@Runwith(SpringJunit4ClassRunner.class)
3. 在测试类上添加@ContextConfiguration(locations="配置文件的路径")
五、优化
1. 将spring的配置文件按照功能拆分成多个配置文件,然后使用import标签导入
2. 在spring的配置文件中使用<context:property-placholder location="properties文件的路径"> 引入外部的properties文件
六、AOP的配置
1. AOP的目标: 在不修改类的源码的基础上,增强类的方法
2. AOP的配置(配置文件方式进行AOP的配置)
2.1 编写一个切面类,将通知方法(用于增强别人的方法)写在切面类中
2.2 所有的aop的配置,都是写在配置文件的<aop:config>标签中
(1). 使用<aop:pointcut>配置切入点: 我们可以通过切入点表达式来表示有哪些方法需要被增强
(2). 配置切面<aop:aspect ref-id="对象的id">
在切面里配置通知:
前置通知: <aop:befor method="方法名" pointcut-ref="切入点的id">
后置通知: <aop:after-returning returning="方法的返回值" method="方法名" pointcut-ref="切入点的id">
异常通知: <aop:after-throwing throwing="异常信息" method="方法名" pointcut-ref="切入点的id">
最终通知: <aop:after method="方法名" pointcut-ref="切入点的id">
环绕通知: <aop:around method="方法名" pointcut-ref="切入点的id">
七、声明式事务的注解方式配置
1. 在spring的配置文件中配置事务管理者
2. 在spring的配置文件中加载事务注解驱动 <tx:annotation-driven transaction-mananger="事务管理者的id"/>
3. 在需要使用声明式事务的方法添加Transactional注解