1. spring概念
spring是完全面向接口的设计,特点:降低程序耦合性,主要事物控制并创建bean实例对象,在ssm整合时,充当粘合剂的作用,(可以把他当做一个大管家,来帮我们管理对象,控制事物等等).spring框架两大核心IOC和AOP
- IOC
IOC控制反转/依赖注入又称DI,spring的核心是一个beanFactory,基于工厂模式实现。当项目启动时,首先加载web.xml;在web.xml中加载spring的配置文件,就会对工厂进行初始化。创建对象;这样我们在使用时,就可以把创建好的对象之间注入到需要用到的类中。bean创建对象默认的是单例模式;这个就称为控制反转依赖注入;注入的方式有3种:
1.set注入、构造器注入、注解式注入;set注入又分为byType和ByName;我们现在一般都使用注解的方式实现;
2.实现控制反转,把对象的创建交给spring管理的注解主要有:@controller、@service@reponstory、@conmspant;
3.依赖注入的注解主要有:@autowaired(根据类型)@resource(默认根据名称,名称找不到再根据类型);基于spring的强大,在框架中引入其他第三方插件时,就可以直接交给spring来管理。比如redis。引入时,只需要在spring文件里边配置一个bean。用的时候直接引用就可以了。好处是:可以实现应用直接的解耦。不需要重复去创建对象;
2.AOP
spring的AOP称为面向切面编程、是对OOP的延续和补充,基于代理模式实现。主要有五大通知:前置、后置、最终、环绕、异常;用它一般可以做:权限拦截、操作日志记录、性能统计;我之前用AOP做过一个操作日志的记录;使用的是注解的方式。首先在spring配置文件中,开启注解。然后自定义一个切面类,普通类+@ascpect注解,就变成了一个切面类;在前面类里边定义了一个空方法,加上@pointcat的注解,作为切入点。切入点我们用的自定义注解的方式,把注解的全路径放在这个pointcat的参数里就可以了。自定义注解就是一个@interface;然后在切面类中定义前置、后置和异常三大通知。再前置通知里边获取请求的参数,在后置和异常里边获取结果,并保存日志; 然后再需要加日志的方法上,加上我们自定义的注解,就OK了。这样,当执行到家里注解的方式时,就会自动触发我们的切面类,进行日志的记录。
spring的优点:
降低组件之间的耦合性,实现了软件各层之间的解耦
可以使用容易提供的众多服务如事物管理,消息服务等
容器提供单例模式支持
容器提供了AOP技术,利用他很容易实现如权限拦截,运行期监控等功能
容器提供了众多的辅助类,能加快应用的开发
spring对于主流的应用框架提供了继承的支持,例如hibernate,JPAStruts等
spring属于地侵入式设计,代码的污染极低
独立于各种应用服务器
spring的DI机制降低了业务对象提花的复杂性
Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可以自由选择Spring的部分或全部
173万+

被折叠的 条评论
为什么被折叠?



