学习的时候,学项目收获大,还是知识点收获大
学项目收获大,
整个课程,以项目和穿插知识点
- 面向接口(抽象)编程的概念与好处
- IOC/DI的概念与好处
- Inversion of control (反向控制)
- dependency injection (依赖注入)
- AOP的概念与好处
- Spring简介
- Spring应用IOC/DI(重要)
- Xml
- annotaion
- Spring应用AOP(重要)
- Xml
- annotaion
- 1.6+Spring2.5.6+Hibernate3.3.2整合(重要)
- openSessionInViewFilter(记住,解决什么问题,怎么解决)
理论越来越少。重要是动手写
面向接口(抽象)编程的概念与好处
面向对象的思维,你第一步要干什么
第一步. 找实体类(不是先考虑设计模式,框架)
想出实体类,再考虑属性
给不同的类分责任(方法)。
设计仁者见仁智者见智,还是用一些约定俗成、好的思维
分层模型(service模型、manager、dao、entity、db)
Service完成的功能,业务逻辑层
Dao主要是数据库层
怎么才能跨数据库平台(mysql,oracel),怎么办啊,办法(面向抽象接口编程)
Service中不写具体的dao,而是接口,daoImpl去实现dao接口,多写几个dao的实现,分别有mysql、oracle的实现。想用谁就去new谁(以前是写死的)
举例:墙装修用壁纸,可以用指定厂家,又可以用符合国家标准的壁纸(面向接口、抽象)
面向抽象、接口编程主要有点就是(灵活性高)
不同的dao方案(以前的)工厂方法方案。每个不同的dao,需要不同的工厂,既然这样设计一个大的工厂,产生所有的dao
Spring配置文件xml->jdom学习读取xml文件(跟google学习)
项目驱动是最快的学习方式
学习的时候不要害怕出错,学会把出错信息读完
读代码不是把所有类方法都弄明白,要大体弄明白,会用就行,进入庐山不是去先弄清一草一木(战略上藐视)。
Jdom和dom4j都是解析xml的,后者功能强大。
JUnit测试。(会用)->怎么写测试类
Spring配置文件怎么写
Service中的Dao从配置文件中读出来。
单词长别害怕,ClassPathXmlApplationContext(放在classPath下的运行程序上下文),运行环境(配置文件)
启动的时候加载配置文件的所有bean,放到某个容器中。用的时候从容器中拿出来
读取xml需要考虑命名空间。
注解开发效率比较高。
ClassPathXmlApplicationContext继承 BeanFactory
这里面有个容器Map<String, Object>
ServletContext(Sevlet运行的时候需要的东西)
各种各样的Context
Spring的核心是自动装配
UserService也不需要new了,从工厂中读取出来。
userDao空指针。
Spring可以把两个对象的关系直接配置进去,userDao有个set、get方法。
Spring可以动态装配,把一个属性注入进来(注入的概念)
BeanUnit特别好用
模拟Spring
什么是IOC(DI),有什么好处
IOC控制反转、Dependency Injection(依赖注入)
UserService依赖于Spring容器注入UserDao
UserDao以前是UserSerice控制,现在由Spring容器根据配置文件控制,反转给容器了
把自己new的东西改为有容器提供
好处,灵活装配
注入实现原理是利用反射。
Flex->知识点
反射视频
Maven
项目中逼着学知识点(不仅会吃鱼,学会自己钓)
链接中传中文不是太专业的做法
Extjs、开发比实施有前途点
Lucene
spring security
行业知识、业务逻辑很重要
Ant自动化编译
项目经验可以学习一些项目、参加项目培训
如果没好的选择、外包是好的起点。优先进入这个行业(能不进就别进去,有选择的话)
Extjs适合做后台内部管理的系统
Sping两点核心概念(IOC、AOP)
学习,先阅读api文档、熟悉这个文档
Spring配置文件的理解。
引入spring包,提供了那些api
先创建个user Libraries
Spring怎么找到spring的配置文件
怎么找,需要看api
配置文件可以按模块分开(好处、多个人协作的时候)
测试程序-》转向用spring,基本不需要改什么
用BeanFactory 还是ApplicationContext(建议使用后者),ApplicationContext功能更强大。。
花点时间把小程序搭建起来
UserService的UserDao属性依赖Spring容器注入的对象
UserService也是注入进来的。
Inverse of Control(控制反转)
用Spring了,UserDao控制在Spring容器中。
原来的程序控制实现,现在控制的是接口(抽象),具体实现控制反转到接口上去。
在配置文件中写的时候不给提示(解决)
Window->pre->myEclipse->xml->xml catalog->add
注入类型
(1)Setter注入(调用了set方法)、(2)构造方法注入<constructor-arg>、(3)接口注入-》看文档(查什么直接去文档中查)
<bean>标签写name=””或者id=””都行,唯一区别,name中可以含有特殊字符
简单属性注入
<property name =”” value=””></property>
<property name=”” ref=””></property>对象
你自己写程序时很少用简单属性注入
但是spring框架提供的bean时后用到。
Bean的生命范围
Bean的配置中可以指定一个属性scope=””,bean的范围生存周期
让自己写的内容程序,要自己看api文档完成.
默认singleton
Prototype(原型)要的时候根据原型造新对象
集合注入(很少自己用),利用别人提供的类。
Properties对象(实际就是个map)
<property name = “”>
<props> 或者<list>或者<map>
</property>
Spring 自动装配
autowire(spring自动装配),可以几种选择byName、byType(常用)、default
属性名和bean的name对应(byName)
byType按类型装配,存在多个时候会报错。
可以写在bean标签上,也可以写在beans上
Bean的生命周期
lazy-init=”true” 什么时候用到了什么时候初始化。
启动的时候把所有的bean创建出来。当程序频繁启动时候有用
Init-method=”init” destroy-method=”destroy”(数据库连接池有个关闭方法)
模拟spring->spring容器(实例化具体bean、动态装配)
注解默认的是byType
IOC方面(Annotation比xml强大),Aop方面相反
使用annotation
想用必须加xmlns和<context:annotation-config>
Xmlns ->xml namespace
Xmlns:context=”http:…”
xsd配置xml语法。最早是dtd. 最早是schema
xsl
@Autowired(默认按类型 by type)
@Quafier ( 想使用byName)
@Required
写在private field(第三种注入形式)(不建议,破坏封装)
如果写在set上,@qualifier需要写在参数上
@Resource(推荐使用)
可以放到fields或者setter方法上
JSR-250, java以前放到SUN公司里面,
现在java的标准都控制在jcp (java Community Process)->定新标准就叫作JSR
Spring2.5没有把JSR-250支持全
@Resource引入一个资源首先是byType 找不到再byName 可以加上(name=””)直接按名称
Annotation必须有源码才能配置
@Component(value=””)->一个组建,修饰类,产生的对象就是组建,供其他使用
放到容器中,key为userDaoImpl,value就是生成组建,可以用value指定名称,默认名称为类名首字母小写
<context:component-scan base-package=””>->自己去找bean,不用在xml中定义了
Xml在没源码的时候可以实现配置。
Annotation开发效率高,快
@ Component @Repository(数据库) @Service(服务) @Controller ->都是组建,没有什么区别。
@Scope标签指定组建生存范围
@PostConstruct(构造完成之后)、 @PreDestroy(对象销毁之前)
AOP(面向切面编程)Aspect-Oriented-Programming
和面向对象编程互相补充,一个是横向、一个是纵向
UserDaoImpl->save(前后加日志)用什么办法
方法前后添加逻辑
第一种方式-》直接加代码
如果没有源码
第二种方法-》利用继承(重写方法)前后加逻辑(能不用继承, 就不用)
第三种方式->实现接口implements UserDao(使用组合)
UserDao userDao = new UserDaoImpl1
Public class LogIntercepter 写日志的方法
动态代理,jdk里面可以产生动态代理Proxy ,InvocationHandler( 动态代理)
Aop 面试的时候问的特别多(回答出来,成功会很高,薪水也会高)
要动态代理的类需要继承一个接口。 不过hibernate不需要。直接改2进制
转载请注明:学时网 » spring3.0听课学习笔记(一)