欢迎您光临本小站。希望您在这里可以找到自己想要的信息。。。

spring3.0听课学习笔记(一)

Java Web water 3186℃ 0评论

学习的时候,学项目收获大,还是知识点收获大

学项目收获大,

整个课程,以项目和穿插知识点

 

 

  1. 面向接口(抽象)编程的概念与好处
  2. IOC/DI的概念与好处
  3. Inversion of control   (反向控制)
  4. dependency injection (依赖注入)
  5. AOP的概念与好处
  6. Spring简介
  7. Spring应用IOC/DI(重要)
  8. Xml
  9. annotaion
  10. Spring应用AOP(重要)
    1. Xml
    2. annotaion
  11. 1.6+Spring2.5.6+Hibernate3.3.2整合(重要)
    1. 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听课学习笔记(一)

喜欢 (0)or分享 (0)

您必须 登录 才能发表评论!