spring技术之IOC总结
spring介绍
spring是分层的javaSE/EE应用的full-stack(全栈)轻量级开源框架,它是ioc(lnversion of control)控制反转和aop(aspect oriented programming)面向切面编程为核心,提供了表现层springmvc和持久层spring jdbc业务层的事务管理等企业级应用解决方案,还能实现将开源世界中众多优秀的第三方框架和类库整合,越来越受欢迎的javaee企业级应用框架。
spring优点
IOC解耦,简化开发
通过spring提供的ioc容器,可以将对象间的依赖关系交由spring管理,避免硬编码造成的程序间过渡耦合,用户也不必再为了编写工厂类,属性文件解析等底层实现编写代码。可以更加专注于业务系统需求实现。
AOP面向切面编程支持
用过spring的aop功能,方便实现面向切面编程,很多使用传统oop编程不容易实现的业务功能,可以通过aop轻松实现,比如事务管理,日志管理。
声明式事务支持
通过声明式方式灵活实现事务管理,提高开发效率和质量,将我们(程序员)从单调烦闷的事务管理代码中解脱出来
方便程序测试
可以使用非容器依赖的方式进行程序测试工作,让测试工作更加轻松,更加方便。
集成第三方优秀框架
spring框架降低了第三方框架的集成使用难度,提供了对各种框架(hibernate,strus2,quartz,mybatis,springmvc等)的直接支持
学习java源码的经典案例
spring的源码设计精妙,结构清晰,匠心独具,处处体现了大师对java设计模式的灵活应用以及java技术的高深造诣,他的源码无疑是java技术的最佳实践案例
IOC介绍
IOC(inversion of control)控制反转,是面向对象编程的一个重要法则,用于消减计算机程序间的耦合问题。控制反转中分为两种类型,一种是DI(Dependency Injection)依赖注入,另外一种是DL(Dependency Lookup)依赖查找。实际应用中依赖注入使用更多。
依赖注入介绍
在我们刚才完成的spring的ioc案例中,已经让spring框架为我们创建了客户业务层,客户持久层对象。但是层与层之间的关系没有维护起来。接下来我们来看spring框架的依赖注入。首先给依赖注入下一个定义,依赖注入(Dependency Injection),它是spring框架核心ioc的具体实现。我们在编写程序代码时,通过控制反转,把对象交给spring管理。但是代码中必然会存在一定的依赖关系,比如在业务层(service)中,需要引用持久层(dao)对象,那么这种层与层之间的关系,我们也交给spring来维护。
简单理解:依赖注入就是给成员变量赋值。
构造方法注入
构造方法注入。顾名思义,就是通过类中的构造方法,给成员变量赋值。
set方法注入
set方法注入。顾名思义,就是通过类中的set方法,给成员变量赋值。
一、spring的IOC常用注解
1.注解入门体验:
第一步:创建项目
第二步:编写项目的三层对象
第三步:搭建spring IOC的xml方式环境
配置pom.xml,导入ioc框架包
编写bean.xml配置文件
第四步:使用注解方式体验
2.常用注解:
2.1.创建对象相关的注解
@Component
衍生的三个注解:@Controller,@Service,@Repository
2.2.设置bean的作用范围相关的注解
@Scope
2.3.注入数据相关的注解
@Autowired,@Qualifier,@Resource,@Value
2.4.与bean的生命周期相关的注解【了解】
@PostConstruct,@PreDestroy
二、案例演示spring的IOC注解使用
1.纯xml版本
第一步:创建项目
第二步:配置pom.xml,导入jar包
spring框架包(ioc相关的jar包)
spring jdbc模块的包
druid连接池包
mysql数据库驱动包
第三步:编写客户实体类
第四步:编写客户RowMapper结果集映射类
BeanPropertyRowMapper
第五步:编写客户持久层对象
第六步:编写客户业务层对象
第七步:编写bean.xml配置文件
第八步:编写客户表现层对象
2.xml与注解混合版本
思路:
第一步:把我们的dao和service使用注解配置
第二步:把第三方的对象(JdbcTemplage,DataSource),保留在bean.xml
第三步:配置包扫描dao和servic
3.纯注解初始版本
思路:不再需要xml文件,找一个什么来代替xml文件???
答案:编写一个java类作为spring的配置类,代替bean.xml文件
4.纯注解优化版本
问题:
1.数据库连接池的属性,在java代码写死了,属于硬编码
2.在主配置文件的对象太多,能不能采用模块化的思想,分模块编写配置类
三、spring框架整合junit
1.纯xml版本的整合
2.纯注解版本的整合