浅学spring

spring 的好处:1.方便解耦,简化开发(Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给spring管理)
2.aop编程的支持(可以方便的实现对程序进行权限拦截,运行监控等功能)
3.声明式事务的支持(只需要通过配置就可以完成对事务的管理,而无需手动编辑)
4.方便程序的测试(junit)
5.方便集成各种优秀的框架(它不排斥各种优秀的开源框架,内部提供了各种优秀框架的直接支持)
6.降低javaee API的难度
一、深入理解ioc和di
ioc控制反转:它是将原始的servlet的创建service和dao层的bean,转换成用bean工厂在xml文件中进行配置,这样可以在配置文件中统一管理bean,并且实现了解耦,便于编程。
依赖注入有三种方法:一种是构造方法(在bean下有一个Constructor-arg index和value),一种是setter方法,接口方法Spring是不支持的。还有一种是p命名空间。要修改xsd将p写进去,然后用P:进行值的初始化。
二、BeanFactory和applicationContext的区别,其实applicationContext是对beanFactory的升级,他俩存在的本质区别是,BeanFactory实行的是延迟加载,而applicationContext实行的创建就加载,然后利用的时候不再创建。
三、三种实例化bean的方法。
1.构造函数:bean下用name和class(要创建的类)来创建。
2.静态工厂:创建一个静态工厂类,然后在xml类,指明引用静态工厂里的方法,Factory-method=“”;
3.实例工厂:使用工厂之前先创建工厂,然后用工厂去创建实例。先有一个创建工厂的bean,然后在service的bean里面应用工厂,在声明用工厂中的哪个方法。
四、bean的种类:1.是普通的bean
2.工厂bean,FactoryBean它的重点是bean,他是一个对象用来创建另一对象,有bean特性,就有Factory的功能。
五、bean(里面的name和id id在ioc的容器中是唯一的,并且它有一定的规范,必须以字母为首字母,而name是可以接口特殊字符的,并且它是可以有重复的,并且它是具有覆盖的功能的。这是以前的形式,但是到目前位置他是一样的功能,只是id是有提示的,name是没有提示的。)
六、bean的作用域。bean的使用范围,取值:singleton(单例,默认),prototype(多例 当使用Struts2的时候必须是多例的。它是在bean下有一个scope=“”的值,其实它有四个,但是常用的就是两个一个单例一个多例。)
七、bean的生命周期,它是指在bean创建到销毁的过程。
1.初始化和销毁可以将方法写好,然后在配置bean的时候添加这两个方法,就可以实现在执行方法之前和之后将两个方法调用,但需要注意的是在销毁的时候必须将其关闭后才可以执行销毁。
2.后处理bean,他其实是一个代理。实现代理就是在要执行的实际对象之前或者之后执行一个方法,这样达到对实际类的增强。
八、spring的el表达式。
九、集合的注入。它本身是有相对应的属性去完成;针对list,map,properties等
十、注解开发: 使用注解是为了取代xml配置的。@Component用于配置bean的。他是用来取代bean的。
十一、spring的junit开发,它需要把jar包导入到lib下。会用@runwith,@contextConfigration(“locations=classpath:配置文件xml所在的位置。”)
生命周期的注解:@postconstruct @prodestroy 单例还是多例@scope(“”)
第二大模块:aop面向切面编程。(关键是通过代理织入对代码进行增强。)AspectJ是一个实现aop的框架。
一、作用:采取横向抽取机制,取代了传统纵向继承体系重复性代码(性能监视,事务管理,安全检查,缓存)
AOP的实现是横向添加,创建代理对象来实现。
aop的作用:事务的管理,性能检测,记录日志。
AOP的专业术语:1.Target 目标对象
2.JoinPoint 连接点。
3.Pointcut 切入点,需要真正被拦截的连接点。
4.Advice 通知(增强的代码,目标方法增强的代码)
5.introduction(引介,特殊的通知)
6.weaving:织入,将我们的通知应用到切入点的过程。
7.Proxy:代理,必须生成代理类。才能将通知和切入点
8.aspect(切面)
代理:手动的代理,Proxy 支持接口,但不支持类,CGLIB可支持类
工厂类实现aop:通过配置文件实现aop编程,将目标类和要增强的放在在配置文件中声明出来,然后,在配置文件中调用动态代理,在动态代理里面声明将要增强的方法和目标的方法写入。这样不需要再写一个类去实现,直接通过配置文件就可以实现给目标方法进行增强。
传统的aop编程:面向切面编程有一定的特点,当将切面的配置去掉的时候,结果不受切面的方法影响,他们是独立的。aop-config在这个标签中去实现面向切面编程,其中最为难以理解的是切入点,具体在哪些方法执行增强,这个需要用表达式来表达,所以这个表达式尤为重要。
aspectJ实现Spring的面向切面编程,首先要导入包。
注意表达式的语法:execution() 构成:【注解】,【修饰符】,返回值类型,包,类,方法名(参数列表)【异常】在中括号内的是可有可无的。
aspectj规定有六个通知类型,常用的有五个,重要的只有一种
before:前置通知,目标方法前执行(数据校验)
afterReturning:后置通知,不表方法后执行,如果不表方法出现异常,后置将不再执行(数据处理)
around:环绕通知,目标方法的前后执行(重要:可以做任何事情)
afterThrowing:抛出异常通知,目标方法发生异常的时候执行(记录日志的,将异常信息包装)
after:最终通知,在目标方法之后执行,基础目标方法有异常也会执行(清理数据,数据库的连接之后释放)。
第三大模块:
spring与数据库连接,有jdbc,dbcp,c3p0+properties企业一般用的是最后那个,能够很好的改变连接数据库的信息。
第四大模块:spring的事务管理

你可能感兴趣的:(个人看书日志总结,spring的基础学)