Spring框架总结
来源:互联网 发布:java九大排序算法 编辑:程序博客网 时间:2024/05/23 14:02
spring基本概念
1)struts2是web框架,hibernate是orm框架
2)spring是容器框架,创建bean,维护bean之间的关系
3)spring可以管理web层,持久层,业务层,dao层,spring可以配置各个层的组件,并且维护各个层的关系
spring核心原理
内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置文件来动态的创建对象,和调用对象里的方法的 。
Spring还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象 进行监督和控制(也就是 在调用这类对象的具体方法的前后去调用你指定的 模块)从而达到对一个模块扩充的功能。这些都是通过 配置类达到的。
Spring目的:就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明管理的(Spring根据这些配置 内部通过反射去动态的组装对象)
要记住:Spring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能。
Spring里用的最经典的一个设计模式就是:模板方法模式。(这里我都不介绍了,是一个很常用的设计模式), Spring里的配置是很多的,很难都记住,但是Spring里的精华也无非就是以上的两点,把以上两点跟理解了 也就基本上掌握了Spring.
1.IOC控制反转
概念:控制权由对象本身转向容器,由容器根据配置文件创建对象实例并实现各个对象的依赖关系。
核心:bean工厂,在Spring中,bean工厂创建的各个实例称作bean2.AOP面向切面编程
a.静态代理
根据每个具体类分别编写代理类
根据一个接口编写一个代理类
b.动态代理
针对一个方面编写一个InvocationHandler,然后借用JDK反射包中的Proxy类为各种接口动态生成相应的代理类
动态代理:
不用写代理类,虚拟机根据真实对象实现的接口产生一个类,通过类实例化一个动态代理,在实例化动态代理时将真实对象及装备注入到动态代理中,向客户端公开的是动态代理,当客户端调用动态代理方法时,动态代理根据类的反射得到真实对象的Method,调用装备的invoke方法,将动态代理、 Method、方法参数传与装备的invoke方法,invoke方法在唤起method方法前或后做一些处理。
1、产生动态代理的类: java.lang.refect.Proxy
2、装备必须实现InvocationHandler接口实现invoke方法
简单的Spring入门案例
1.编写一个类:UserService
package com.cloud.service; public class UserService { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public void sayHello(){ System.out.println("hello:"+name); } }
2.编写核心配置文件:applicationContext.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" /> <!-- 在容器中配置bean对象 --> <!-- 下面这句等价于:UserService userService = new UserService() --> <bean id="userService" class="com.cloud.service.UserService"> <!-- 等价于:userService.setName("SpringName"); --> <property name="name"> <value>SpringName</value> </property> </bean> </beans>
3.编写测试类:Test
package com.cloud.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.cloud.service.UserService; public class Test { public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); UserService userService = (UserService) ac.getBean("userService"); userService.sayHello(); } }
spring的三种注入方式是什么?
setter
interface
constructor
spring原理总结
1.使用spring ,没有new对象,我们把创建对象的任务交给spring框架
2.spring实际上是一个容器框架,可以配置各种bean(action/service/domain/dao),并且可以维护bean与bean的关系,当我们需要使用某个bean的时候,我们可以getBean(id),使用即可.
参考博客:
http://www.cnblogs.com/zhoudi/p/5820513.html
http://blog.csdn.net/dzy21/article/details/51737265
- Spring框架总结
- Spring框架总结
- Spring框架知识点总结
- Spring框架知识总结
- Spring框架总结:
- Spring框架学习总结
- Spring框架总结
- Spring框架总结
- Spring框架总结
- Spring框架总结
- Spring框架组件总结
- Spring框架总结
- 总结Struts,Hibernate,Spring框架
- 总结Struts,Hibernate,Spring框架
- 总结Struts,Hibernate,Spring框架
- spring mvc框架学习总结
- Spring MVC 框架学习总结
- eclipse 搭建spring框架总结
- 56. Merge Intervals && 57. Insert Interval
- Qt之QSS(Q_PROPERTY-自定义属性)
- 字符串转换为数字
- [状压DP]LibreOJ #6177. 「美团 CodeM 初赛 Round B」送外卖2 题解
- c语言中逗号运算符和逗号表达式
- Spring框架总结
- 趣图丨程序员的专属菜单
- 汉诺塔递归实现原理
- 在Anaconda中随意更改python版本和其他相关包版本的使用经验!
- python包:glob用法
- 十大要避免的Ext JS开发方法
- C++容器类——沉寂的孤城
- ABAP: Search help in Dynpro
- JS中的!=、== 、!==、===的用法和区别。