notes

本文详细介绍了Spring框架的核心概念IOC(依赖注入)及其实现方式,包括不同类型的注入方法及其优缺点,并深入探讨了Spring AOP(面向切面编程)的配置与应用,通过示例展示了如何利用Spring实现灵活的组件管理和横切关注点的分离。

IOCDI

1.       把自己new的东西改为由容器提供

a)       初始化具体值

b)       装配

2.       好处:灵活装配

Spring IOC配置与应用

1.       注入类型

b)       setter

c)        构造方法

d)       接口注入(方法注入)

       http://esffor.iteye.com/blog/96278

2.       id vs. name

b)       name可以用特殊字符

3.       简单属性的注入

b)       <property name=… value=….>

4.       <bean 中的scope属性

b)       singleton 单例

c)        proptotype 每次创建新的对象

5.       集合注入

6.       自动装配

b)       byName

c)        byType

d)       如果所有的bean都用同一种,可以使用beans的属性:default-autowire

7.       生命周期

b)       lazy-init (不重要)

c)        init-method destroy-methd 不要和prototype一起用(了解)

8.       Annotation第一步:

a)       修改xml文件,参考文档<context:annotation-config />

9.       @Autowired

a)       默认按类型by type

b)       如果想用byName,使用@Qulifier

c)        写在private field(第三种注入形式)(不建议,破坏封装)

d)       如果写在set上,@qualifier需要写在参数上

10.   @Resource(重要)

a)       加入:j2ee/common-annotations.jar

b)       默认按名称,名称找不到,按类型

c)        可以指定特定名称

d)       推荐使用

e)       不足:如果没有源码,就无法运用annotation,只能使用xml

11.   @Component @Service @Controller @Repository

a)       初始化的名字默认为类名首字母小写

b)       可以指定初始化bean的名字

12.   @Scope

13.   @PostConstruct = init-method; @PreDestroy = destroy-method;

14.  <context:component-scan base-package="com.package"/>  

什么是AOP

1.       面向切面编程Aspect-Oriented-Programming

a)       是对面向对象的思维方式的有力补充

2.       好处:可以动态的添加和删除在切面上的逻辑而不影响原来的执行代码

a)       Filter

b)       Struts2interceptor

3.       概念:

a)       JoinPoint

b)       PointCut

c)        Aspect(切面)

d)       Advice

e)       Target

f)         Weave

Spring AOP配置与应用

1.       两种方式:

a)       使用Annotation

b)       使用xml

2.       Annotation

a)       加上对应的xsd文件spring-aop.xsd

b)       beans.xml <aop:aspectj-autoproxy />

c)        此时就可以解析对应的Annotation

d)       建立我们的拦截类

e)       @Aspect注解这个类

f)         建立处理方法

g)       @Before来注解方法

h)       写明白切入点(execution …….

i)          spring对我们的拦截器类进行管理@Component

3.       常见的Annotation:

a)       @Pointcut

b)       @Before

c)        @AfterReturning

d)       @AfterThrowing

e)       @After

f)         @Around

4.       织入点语法

a)       void !void

b)       参考文档(* ..

5.       xml配置AOP

a)       interceptor对象初始化

b)       <aop:config

                        i.              <aop:aspect …..

1.       <aop:pointcut

2.       <aop:before

 

Spring 的AOP框架

待续。。。

Spring 的MVC框架

待续。。。

Spring整合Hibernate

 

1.       Spring 指定datasource

a)       参考文档,找dbcp.BasicDataSource

                        i.              c3p0

                       ii.              dbcp

                     iii.              proxool

b)       DAO或者Service中注入dataSource

c)        Spring中可以使用PropertyPlaceHolderConfigure来读取Properties文件的内容

2.       Spring整合Hibernate

a)       <bean .. AnnotationSessionFactoryBean>

                        i.              <property dataSource

                       ii.              <annotatedClasses

b)       引入hibernate 系列jar

c)        User上加Annotation

d)       UserDAO或者UserServie 注入SessionFactory

e)       jar包问题一个一个解决

3.       声明式的事务管理

a)       事务加在DAO层还是Service层?

b)       annotation

                        i.              加入annotation.xsd

                       ii.              加入txManager bean

                     iii.              <tx:annotation-driven

                    iv.              在需要事务的方法上加:@Transactional

                      v.              需要注意,使用SessionFactory.getCurrentSession 不要使用OpenSession

c)        @Transactional详解

                        i.              什么时候rollback

1.       运行期异常,非运行期异常不会触发rollback

2.       必须uncheck (没有catch)

3.       不管什么异常,只要你catch了,spring就会放弃管理

4.       事务传播特性:propagation_required

5.       read_only

d)       xml(推荐,可以同时配置好多方法)

                        i.              <bean txmanager

                       ii.              <aop:config

1.       <aop:pointcut

2.       <aop:advisor pointcut-ref advice-ref

                     iii.              <tx:advice: id transaction-manager =

e)       HibernateTemplateHibernateCallbackHibernateDaoSupport(不重要)介绍

                        i.              设计模式:Template Method

                       ii.              Callback:回调/钩子函数

                     iii.              第一种:(建议)

1.       spring中初始化HibernateTemplate,注入sessionFactory

2.       DAO里注入HibernateTemplate

3.       savegetHibernateTemplate.save();

                    iv.              第二种:

1.       HibernateDaoSupport继承

2.       必须写在xml文件中,无法使用Annotation,因为set方法在父类中,而且是final

f)         spring整合hibernate的时候使用packagesToScan属性,可以让spring自动扫描对应包下面的实体类

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值