Spring零散笔记

IOC(控制反转),也称DI(Denpendency Inject依赖注入)。
1.把自己new的东西改为由容器提供。
初始化具体bean
动态装配
2.好处:灵活配置。

控制反转:将控制权交给容器
依赖注入:setdao根据实际的dao注入(setdao依赖于实际的dao)

spring是一个IOC容器,可以实例化具体的bean,还可以动态装配。
还支持AOP:安全检查,管理transaction。

FAQ:不给提示
a.window-preferences-myeclipse-xml catalog
b.User Specified Entries - add
location:
....../spring-framework-2.5.6/dist/resources/spring-beans-2.5.xsd
Key Type:
Schema Location
Key:
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

注入类型:
1.setter(重要)
2.构造方法
3.接口注入
Id&Name:
name和id都可以,但是name中可以含有特殊字符。
简单属性注入:<property name=... value=...>

Bean的scope(生存范围):
默认是sigleton:单例,每次取到的bean都是同一个。
还有prototype:取到的不是同一个,每次都创建新的对象。
还有和web相关的三种方法,较少用。

集合注入。

自动装配:
byName
byType
一般写在bean标签上,如果所有的bean都用同一种,可以使用beans的属性:dafaule-autowire

生命周期:
lazy-init (一开始不初始化,用到的时候才初始化)
init-method="init" destory-method="destory" 不要和prototype一起使用
类被初始化的时候调用init,被消亡的时候调用destory

@Autowired
默认按类型by Type
如果想用byName,使用@Qulifier
写在priavate field(第三种注入形式)--不建议,破坏封装
如果写在set上,@quailfier需要写在参数上

@Resourde(重要)
加入:j2ee/common-annotations.jar
默认按名字,名字找不到,才按类型
可以指定特定名称
推荐使用
不足:如果没有源码,就无法使用annotaton,只能使用xml

@Component
初始化的名字默认为类名首字母小写
可以指定初始化bean的名字

@Scope

@PostConstruct = init-method
@PreDestroy = destroy-method

面向切面编程:
Aspect-Oriented-Programming
好处:可以动态的添加和删除在切面上的逻辑而不影响原来的执行代码
例如:
servlet:filter
struct:Intercepter
还可以应用于:权限检查,异常处理,效率计算,事务管理。

概念(第22集后面):
JoinPoint
PointCut
Aspect
Advice
Weave

Spring AOP配置与应用:
两种方式:使用Annotation和使用xml

Annotation:
加上对应的xsd文件spring-aop.xsd
beans.xml<aop:aspect:j-autoproxy />
此时就可以解析对应的Annotation
建立我们的拦截类
用@Aspect注解这个类
建立处理方法
用@before来注解这个方法
写明白切入点
让spring对我们的拦截器进行管理@Component
常见的Accotation:
@Pointcut
@Before
@AfterReturning
@AfterThrowing
@After
@Around

Spring整合Hibernate:
Spring指定datasource
1.参考文档,zhao dbcp.BasicDataSource
c3p0
dbcp
proxxo
在DAO或者Service中注入dataSource
在Spring中可以hi用PropertyHolderConfigure来读取Properties文件的内容。
Spring 整合Hibernate:
1.<bean..AnnotationSessionFactoryBean>
<property dataSource>
<annotationClasses>
2.引入Hibernate系列jar包
User上加Annotation
UserDAO或者UserService注入SessionFactory
jar包问题一个一个解决。

声明式的事务管理:
事务加载DAO层还是Service层?
annotation:
加入annotation.xsd
加入txManager bean
<tx:annotation-driven
在需要的事务的方法上加@Transational
需要注意,使用SessionFactory.getCurrentSession不要使用openSession
@Transactional详解:
什么时候rollback:
1.运行期异常,非运行期异常不会触发rolback
2.必须uncheck(没有catch)
3.不管什么异常,只要你catch了,spring就会放弃管理
4.事物传播特性:propagation_required
5.read_only

xml(推荐,可以同时配置很多方法)
1.<bean txManager
2.<aop:config
<aop:pointcut
<aop:advisor pointcut-ref advice-ref
3.<tx:advise:id transaction-manager=

HibernateTemplate、HibernateCallback、HibernateDaoSupport(不重要)
介绍:
设计模式:Template Method
Callback----回调、钩子(函数)
1.第一种:
<1.在Spring中初始化HibernateTemplate,注入sessionFactory
<2.DAO里注入HibernateTemplate
<3.save写getHibernateTemplate.save(0
2.第二种:
<1.从HibernateDaoSupport继承
<2.必须卸载xml文件中,无法使用Annotation,因为set方法在父类中,而且是final的

spring整个hibernate的时候使用packageToScan属性,可以让spring自动扫面对应包下面的实体类。

整合步骤:
需要的额jar包在48集。
将这些所有的jar包保存到一个位置,使用的时候直接copy。
首先加入jar包
整合Spring+Hibernate:
1.建立package
<1.dao/daoimpl/model/service/serviceimpl/test
2.建立对应的接口与类框架
S2SH_01
3.建立Spring的配置文件(建议自己保留一份经常使用的配置文件,以后用到的时候直接copy改)
4.建立数据库
5.加入Hibernate注解
<1.在实体类上加相应的注解@[email protected]等
<2.在beans配置文件配置对应的实体类,使之受管
6.写dao service的实现
7.加入Spring注解
<1.在对应Service及DAO实现中加入@Component,让spring对其初始化
<2.在service上加入@Transactional或者使用xml方式(此处建议后者,因为更简单)
<3.在DAO中注入sessionFactory
<4.在servcie中注入DAO
<5.写dao与service的实现
8.写测试
整合Strust2
结合点:Struts2的Action由Spring产生
步骤:
1.修改web.xml加入struts的filter
2.再加入spring的listener,这样的话,webapp一旦启动,spring容器就初始化
3.规划struts的action和jsp展现
4.加入struts.xml
修改配置,有spring替代struts产生Action对象
5.修改action配置
把类名改为bean对象的名称,这个时候就可以使用首字母小写了
@Scope("prototype")不要忘记
struts的读常量顺序:
struts-default.xml----struts-plugin.xml----struts.xml----struts.properties----web.xml

中文问题:
1.struts2.1.8已经修正,只需要改i18n.encoding=gbk
2.只用spring的characterencoding
3.需要严格注意filter的顺序
4.需要加到struts2的filter前面

LazyInitializationException:
1.OpenSessionInViewFilter
2.需要严格顺序问题
3.需要加到struts2的filter前面

Spring零散笔记

时间: 2024-10-28 12:26:22

Spring零散笔记的相关文章

Spring学习笔记(一)

Spring学习笔记(一) Spring核心思想: IOC:  Inversion Of Control (控制反转) / DI: Dependency Injection (依赖注入) AOP: Aspect Oriented Programming (面向切面编程) IOC 1. 简单的应用 Model package com.wangj.spring.model; public class User { private String username; private String pas

不错的Spring学习笔记(转)

Spring学习笔记(1)----简单的实例 ---------------------------------   首先需要准备Spring包,可从官方网站上下载.   下载解压后,必须的两个包是spring.jar和commons-logging.jar.此外为了便于测试加入了JUnit包.   在Myeclipse中创建Java项目.   编写一个接口类,为了简单,只加入了一个方法.   Java代码   1.package com.szy.spring.interfacebean;  

【Thinking In Java零散笔记】对于持有对象一章中的显示系统环境变量代码分析

今天仍旧进行着学习java的计划.在学习到持有对象一章中,看到了如下代码: 1 import java.util.*; 2 3 public class EnvironmentVariables { 4 public static void main(String[] args) { 5 for(Map.Entry entry: System.getenv().entrySet()) { 6 System.out.println(entry.getKey() + ": " + 7 en

struts2,hibernate,spring整合笔记(2)

上一话struts2,hibernate,spring整合笔记(1) 接下来继续 配置完struts之后就要开始hibernate的配置 hibernate的环境并不依赖web开发环境,在我第一次配置hibernate时用的javase, 在window-> preferences->java->user libraries,创建一个新的Use libraries,添加相应的jar包 再在项目build path->build configurationpath->add l

struts2,hibernate,spring整合笔记(3)

struts2,hibernate,spring整合笔记(1) struts2,hibernate,spring整合笔记(2) 配好struts和hibernate就要开始spring了 老规矩,还是先导入jar包 spring.jar aspectjrt.jar aspectjwerver.jar cglib-nodep-2.1_3.jar common-logging.jar c3p0-0.9.1.jar 之后加入配置文件src目录下applicationContext.xml <?xml

《Spring学习笔记》:Spring、Hibernate、struts2的整合(以例子来慢慢讲解,篇幅较长)

<Spring学习笔记>:Spring.Hibernate.struts2的整合(以例子来慢慢讲解,篇幅较长) 最近在看马士兵老师的关于Spring方面的视频,讲解的挺好的,到了Spring.Hibernate.struts2整合这里,由于是以例子的形式来对Spring+Hibernate+struts2这3大框架进行整合,因此,自己还跟着写代码的过程中,发现还是遇到了很多问题,因此,就记录下. 特此说明:本篇博文完全参考于马士兵老师的<Spring视频教程>. 本篇博文均以如下这

spring学习笔记(19)mysql读写分离后端AOP控制实例

在这里,我们接上一篇文章,利用JNDI访问应用服务器配置的两个数据源来模拟同时操作不同的数据库如同时操作mysql和oracle等.实际上,上个例子可能用来模拟mysql数据库主从配置读写分离更贴切些.既然如此,在本例中,我们就完成读写分离的模拟在web端的配置实例. 续上次的例子,关于JNDI数据源的配置和spring datasource的配置这里不再重复.下面着重加入AOP实现DAO层动态分库调用.可先看上篇文章<spring学习笔记(18)使用JNDI模拟访问应用服务器多数据源实例 >

Spring学习笔记(三)

Spring学习笔记(三) AOP 一.使用Annotation方式实现AOP.步骤: xml里加入配置:<aop:aspectj-autoproxy /> <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org

Spring Security笔记:Remember Me(下次自动登录)

前一节学习了如何限制登录尝试次数,今天在这个基础上再增加一点新功能:Remember Me. 很多网站,比如博客园,在登录页面就有这个选项,勾选“下次自动登录”后,在一定时间段内,只要不清空浏览器Cookie,就可以自动登录. 一.spring-security.xml 最简单的配置 1 <http auto-config="true" use-expressions="true"> 2 ... 3 <remember-me /> 4 <