1.面向抽象编程:先定义借口,然后再定义借口的Impl。比如userDao ,mysqluserDaoImpl ,oracleuserDao等等。。想实现什么接口都可以,很灵活。
private UserDao userDao = new UserDaoImpl() ; 在配置文件里面可以写具体的实现。只需要改Impl。
2.Spring可以动态的装配,可以把dao和service放一起,在一个类里面把属性注入到配置文件中。
<bean name="applicationService" class="com.igate.oa.service.ApplicationService"
parent="baseService">
<property name="applicationDao" ref="applicationDao" />
<property name="applicationTypeDao" ref="applicationTypeDao" />
</bean>
property 相当于setapplicationDaot。等等。。
3.下面的BeanFactory的子类ClassPathXmlApplicationContext可以包含几个xml文件,为了避免影响,见项目。
我们一般不用BeanFactory ,而一般用ApplicationContext,因为它的功能更强大。BeanFactory不能完成bean的生命周期,而ApplicationContext能,还能完成其他的一些功能。
4.Spring依赖注入:DI ,控制翻转:IOC 。见视频08。
5. FAQ:不给提示:
a) window – preferences – myeclipse – xml – xml catalog
b) User Specified Entries – add
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
6.springBean的生命范围:singleon单例(不管拿多少次bean,都是同一个),prototype(每次拿bean都是新的,struts2里面就是这个),request,session,globalsession
7.自动装配:(视频14)byName byType 也是不用写property ,用的不多。也可以写在beans标签里面default-autowire="" ,在bean里写autowire=“defaulet”
private String toString(){}
8.spring生命周期:lazy-init="true" 一般不用 :意思就是启动的时候不用启动所有的bean。
9.视频15:init-method="init" destroy-method="destroy" (关闭时调用).不要和prototype一起用。
10.spring的annotation配置:默认是byType 自动找到set方法上面写@Autowired
可以指定具体注入bean的名字:@Qualifier
@Resource 默认byName,找不着再按类型,写(name=“”)这种方法用的比@Autowired多。
11.另外一种注解annotation,这样配置文件里bean的配置都不用写了。
11.2:一般都要写上名字,除非名字就类名的首字母小写。
@Component @Service @Controller @Repository 4个都是一样的。
a) 初始化的名字默认为类名首字母小写
b) 可以指定初始化bean的名字(value=”” 或省略)
UserDAOImpl类 Component("u") ,表示它的value是u,这样在@Resource里写name=u就对应起来了
UserService类
UserService里面写了这个,测试程序就可以用.getBean("userService");
1. @Autowired
a) 默认按类型by type
b) 如果想用byName,使用@Qulifier
c) 写在private field(第三种注入形式)(不建议,破坏封装)
d) 如果写在set上,@qualifier需要写在参数上
2. @Resource(重要)
a) 加入:j2ee/common-annotations.jar
b) 默认按名称,名称找不到,按类型
c) 可以指定特定名称
d) 推荐使用
e) 不足:如果没有源码,就无法运用annotation,只能使用xml
3. @Component @Service @Controller @Repository
a) 初始化的名字默认为类名首字母小写
b) 可以指定初始化bean的名字(value=”” 或省略)
12.注解的生存范围,和方法。如下:
1. @Scope
2. @PostConstruct = init-method; @PreDestroy = destroy-method;
13.spring DataSource: 视频25
14.spring 整合 见项目 (dataAccessContext.xml) 视频29
Spring_Hibernate_使用Annotation进行声明式事务管理 视频29 hibernate的异常为RunTimeException
现在@Transactional自动遇到异常自动回滚(RunTimeException )。。而不用在方法里面写try catch
别的方法调这个方法,(别的方法)有Transactional的话就用这个@Transactional,没有的话创建一个新的。
Spring_Hibernate_使用Xml进行声明式事务管理:
readonly只是spring提高性能优化,还有就是不允许进行修改操作的时候可以这样做,不过要确定没有改,删,更新等等,只有读。。
事务管理,项目一般用xml配置。
15.packageToScan :springHibernate的配置。annotation的配置实体类。
xml:
<property name="mappingDirectoryLocations">
<list>
<value>classpath:com/igate/oa/vo/hbm</value>
</list>
</property>
16.hibernateTemplate
callBack回调,钩子函数。执行到一半的时候,掉我们写的函数。
项目中的HibernateDaoSupport没法用annotation注入,用xml。因为要注入sessionFactory。
17.ssh整合视频 25开始 声明式事务管理 视频28
18. 纯的jsp + java +jdbc 视频35 项目 23