本文共 8773 字,大约阅读时间需要 29 分钟。
默认在spring容器初始化时(即new ClassPathXmlApplicationContext("beans.xml")),对容器中的类进行实例化, 而不是getBean方法时(一般将取得的对象赋值给某个对象);当scope为prototype时,则在调用getBean方法时容器中的类被初始化了;当初始化的状态改为‘lazy-init’=true时, 则在getBean调用时才被初始化。可以设定全局的,也可设定某个类的lazy-init属性。
默认情况下(即scope为singleton)生成的对象为单例的, 当prototype时生成多例对象。
在spring的配置文件中,可以通过init-method和destroy-method指定类中那个方法需要在初始化时就执行,哪些方法需要在容器关闭时被执行。可以通过执行AbstractBeanFactory的close()方法来销毁容器来进行实验。
要将一个属性null,需要通过<null />标签,如果不设置,则属性为默认值(在实例化时)而不是null。 <property name=”name”><null /> </property>。可参考:
7. Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2整合(重要)
i. spring.jar , jarkata-commons/commons-loggin.jar
i. Location: D:\share\0900_Spring\soft\spring-framework-2.5.6\dist\resources\spring-beans-2.5.xsd
ii. URI: file:///D:/share/0900_Spring/soft/spring-framework-2.5.6/dist/resources/spring-beans-2.5.xsd
iii. Key Type: Schema Location
iv. Key: http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
d) 接口注入(可以忘记)
a) 修改xml文件,参考文档<context:annotation-config />
b) beans.xml <aop:aspectj-autoproxy />
c) 此时就可以解析对应的Annotation了
i. <aop:aspect …..
i. c3p0
ii. dbcp
iii. proxool
i. <property dataSource
ii. <annotatedClasses
i. 加入annotation.xsd
ii. 加入txManager bean
iii. <tx:annotation-driven
iv. 在需要事务的方法上加:@Transactional
v. 需要注意,使用SessionFactory.getCurrentSession 不要使用OpenSession
i. 什么时候rollback
i. <bean txmanager
ii. <aop:config
iii. <tx:advice: id transaction-manager =
i. 设计模式:Template Method
ii. Callback:回调/钩子函数
iii. 第一种:(建议)
iv. 第二种:
jar 包名称 | 所在位置 | 说明 |
antlr-2.7.6.jar | hibernate/lib/required | 解析HQL |
aspectjrt | spring/lib/aspectj | AOP |
aspectjweaver | .. | AOP |
cglib-nodep-2.1_3.jar | spring/lib/cglib | 代理,二进制增强 |
common-annotations.jar | spring/lib/j2ee | @Resource |
commons-collections-3.1.jar | hibernate/lib/required | 集合框架 |
commons-fileupload-1.2.1.jar | struts/lib | struts |
commons-io-1.3.2 | struts/lib | struts |
commons-logging-1.1.1 | 单独下载,删除1.0.4(struts/lib) | struts spring |
dom4j-1.6.1.jar | hibernate/required | 解析xml |
ejb3-persistence | hibernate-annotation/lib | @Entity |
freemarker-2.3.13 | struts/lib | struts |
hibernate3.jar | hibernate | |
hibernate-annotations | hibernate-annotation/ | |
hibernate-common-annotations | hibernate-annotation/lib | |
javassist-3.9.0.GA.jar | hiberante/lib/required | hibernate |
jta-1.1.jar | .. | hibernate transaction |
junit4.5 | | |
mysql- | | |
ognl-2.6.11.jar | struts/lib | |
slf4j-api-1.5.8.jar | hibernate/lib/required | hibernate-log |
slf4j-nop-1.5.8.jar | hibernate/lib/required | |
spring.jar | spring/dist | |
struts2-core-2.1.6.jar | struts/lib | |
xwork-2.1.2.jar | struts/lib | struts2 |
commons-dbcp | spring/lib/jarkata-commons | |
commons-pool.jar | .. | |
struts2-spring-plugin-2.1.6.jar | struts/lib | |
i. 建立对应的package
ii. 建立对应的接口与类框架
iii. 建立spring的配置文件(建议自己保留一份经常使用的配置文件,以后用到的时候直接copy改)
iv. 建立数据库
v. 加入Hibernate注解
vi. 写dao service的实现
vii. 加入Spring注解
viii. 写测试
i. 结合点:Struts2的Action由Spring产生
ii. 步骤:
a) 修改配置,由spring替代struts产生Action对象
a) 把类名改为bean对象的名称,这个时候就可以使用首字母小写了
b) @Scope(“prototype”)不要忘记
iii. struts的读常量:
iv. 中文问题:
v. LazyInitializationException
本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/417035,如需转载请自行联系原作者