Spring知识点.doc

上传人:M****1 文档编号:554997886 上传时间:2023-08-07 格式:DOC 页数:4 大小:76.50KB
返回 下载 相关 举报
Spring知识点.doc_第1页
第1页 / 共4页
Spring知识点.doc_第2页
第2页 / 共4页
Spring知识点.doc_第3页
第3页 / 共4页
Spring知识点.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《Spring知识点.doc》由会员分享,可在线阅读,更多相关《Spring知识点.doc(4页珍藏版)》请在金锄头文库上搜索。

1、Spring一, Spring 业务逻辑组件框架其实程序最难维护的就是应对将来变化的部分1) IOC容器 使组件关系变得松散2) AOP框架 使应用易于扩展,最小的代价去应付将来的变化3) 通用支持 提供事务,安全,缓存等二, Spring 开发包Dist/spring.jar 核心的Jar包,轻量级Dist/modules/spring-*.jar 划分模块的Jar包Dist/sources/dtd xsd Docs/referenceDocs/api三, IOC容器l IOC-Inversion Of Contorl 控制反转过去是通过Service方法自己的组件里面,通过ifelse去寻

2、找各自实例化各自的对象(组件)现在变成用配置文件(容器)去控制,各自的对象(组件),实例化对象。因此:组件的实例化和组件间的关系都被容器控制而非组件自己。l DI- Dependency Injection 依赖注入组件需要什么样的依赖组件,该组件就通过外部容器注入进来四, 最基本的HelloWorld1) 创建ItemDao和ItemDaoImpl,OrderDao和OrderDaoImpl实现接口和类的相关方法:public interface ItemDao void update();public interface OrderDao void save();2) 在StoreServ

3、iceImpl的类里面调用这两个实现类ItemDao和OrderDaopublic class StoreServiceImpl implements StoreService private OrderDao orderDao;private ItemDao itemDao;Overridepublic void sumbitOrder() orderDao.save();System.out.println(方法被调用);itemDao.update();/省略ItemDao和OrderDao的getXXX()和setXXX()方法3) 请问:ItemDao和OrderDao这两个接口是如

4、何实例化的呢?这时就需要用到我们的Spring框架去创建这个、两个对象。需要导入Spring的jar包。4) 主要的是需要我们按照一个什么样的规则去创建这两个对象?所以Spring给我们提供了一个配置文件:applicationContext.xml去规则我们创建的对象,也就是组件(Bean)5) 编写一个测试的方法去读取配置文件,并创建对象:public class StoreServiceTest public static void main(String args) /若在src下,这么写applicationContext.xml/若在first下,这么写first/applicat

5、ionContext.xml/配置文件对象,为了方便的获取这个文件,用ClassPathResource封装,不进行解析,XmlBeanFactory对这个文件进行解析Resource resource=new ClassPathResource(applicationContext.xml);BeanFactory context=new XmlBeanFactory(resource);StoreService service = (StoreService)context.getBean(serviceStore);service.sumbitOrder();五, IOC容器的类型Bea

6、nFactory:最原始的,占用资源比较小ApplicationContext:扩展了BeanFactory,功能更强大一些,占用资源比较大【问题】上述的StoreService是什么时候实例化的呢?1) BeanFactory延迟实例化组件,在对象用到的时候,才去实例化对象, context.getBean(serviceStore),通过这句话是实例化组件2) ApplicationContext是预先的实例化组件,实现类:从不同的路径下去加载配置文件,具体的实现类如下:ClassPathXmlApplicationContext:从类路径下去加载FileSystemXmlApplicat

7、ionContext:从文件系统下去加载XmlWebApplicationContext:从Web工程的根路径下去加载new ClassPathXmlApplicationContext(applicationContext.xml),通过这句话是实例化组件六, 配置文件1) 组件实例化相关Dao=Class.forName(className).newInstance();这种反射去得到的对象,是必须类里面有无参的构造方法,这样容器与组件之间必须要达成一种契约协议(配置文件),例如这个反射,必须要有无参的构造方法,但是如果组件没有无参的构造方法,那么Spring该怎么办?实例化的途径:A.

8、调用无参构造方法,去实例化默认的调用无参的构造方法B. 调用有参构造方法,去实例化 /指定参数 /可以无序的排放,根据类型匹配这样容器调用的构造方法为:public StoreServiceImpl(OrderDao orderDao, ItemDao itemDao) this.orderDao = orderDao;this.itemDao = itemDao;这样去理解:是调用反射去创建实例Class.forName(className)是通过调用setXXX(OrderDao odao)去注入是通过调用有参的构造方法StoreServiceImpl(OrderDao orderDao,

9、 ItemDao itemDao)去注入C. 调用工厂方法,去实例化【工厂方法1】Calendar cal=Calender.getInatance();通过工厂方法去实例化对象Date date=cal.getTime();如何使用Spring去获得上述Java语句的对象id:指定得到对象的引用class:指定工厂的类型factory-mehod:调用工厂的方法factory-bean:调用上一个cal对象的Bean,cal.getTime();【工厂方法2】String path=System.getenv(Path ) /传递一个具体的String值path进去2) 实例化的时机 表示预

10、先实例化组件3) 组件的作用域:缺省就是单例的,线程是单例的行为组件一般为单例的4) 组件Bean的生命周期:实例化DI(setXXX())-初始化就绪清理回调不存在初始化:销毁: 【问题】为什么不再构造方法里面初始化,而要用init()方法原因就是:在创建对象,调用构造方法的时候,需要进行DI操作Class MyServlet extends HtpServletInit()String path=getServletConfig().getParamter();MyServlet()String path=getServletConfig().getParamter(); /报错5) 与装配相关装配的属性关系:对其他Bean的引用:简单值类型:8种基本的类型及包装类型,如在类里面写:private double d; /省略getXXX()和setXXX()在配置里面写:集合类型:Set,list,Map,Propertiesjava

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号