Spring初学
一。spring体系结构
spring核心组件
1.Beans(包装应用程序自定义对象Object,Object中存有数据)
2.Core (资源加载,资源抽象,建立维护与bean之间的一些关系所需的一些工具)
3.Context (一个bean关系的集合)
4.Expression Language
Spring设计理念
1.spring是面向Bean的编程
2.spring两大核心技术 1.控制反转 2.面向切面编程
3.spring优点
低侵入设计
独立于各种应用服务器
依赖注入特性将组件关系透明化,降低了耦合度
面向切面编程特性允许将通用任务进行集中式处理
与第三方宽假的良好整合
二。spring IOC(Inversion of Control)
定义和原理:
理解一:将控制组件的控制权从代码本身转移到外部容器(Spring容器)
组件化的思想:分离关注点,使用接口,不再关注实现
依赖注入:将组件的构建和使用分开
目的:解耦和,实现每个组件只关注组件内部的事情
要点:明确定的接口
IOC的好处:解耦和 利于程序扩展
IOC:思想控制反转
DI:实现层面,依赖注入
applicontionContext.xml 容器
spring配置文件
<bean id="hellSpring" class="cn.springdemo.HellSpring">
//指定被赋值属性名
<property name="who">
<!--赋值内容-->
<value>Spring</value>
</property>
</bean>
AOP定义和原理(Aspact Oriented Programming)面向切面编程
目标:让我们可以专心做事 日志记录 事务处理 异常扑获
原理:
1.将复杂的需求分解出不同方面,将公共功能集中解决
2.采用代理机制组装起来运行,在不改变源程序的基础上对代码段进行增强处理,增加新的功能。
所谓面向切面编程,是一种通过预编译方式和运行期动态代理实现在不修改源码的情况下给程序动态添加功能的技术。
bean的作用域
Struts2: Action类多例的。 Struts1 Action是单例的
S2: Servlet 单例的 xxx_jsp.java 底层也是通过单例多线程来处理客户端请求的
JSP:单例的 xxx.jsp
scope="prototype" 原型模式(N个对象):真正使用时才会创建,每获取一次,都会创建不同对象
scope="singleton" 单例模式:容器初始化时需要使用name建,每次获取的都是同一个对象,默认值
三。AOP相关术语
增强处理(advice)
前至增强
后置增强
环绕增强。异常抛出增强,最终增强
切入点(pointcut)
连接点(Join Point)
切面(Aspect)
目标对象(Target object)
aop代理(AOP proxy)
织入(Weaving)
前置增强接口 MethodBeforeAdvice
后置增强接口 AfterReturningAdvice
6.BeanFactory 使用对象的时候创建,这是和ApplicationContext的区别
Resource resource=new ClassPathResource("applicationContext.xml");
BeanFactory ctx=new XmlBeanFactory(resource);
获取到上下文,并没有初始化bean,等待使用bean的时候才初始化
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
所有的bean已经初始化了
http://www.yesky.com/imagesnew/software/spring/beans.html
7.代码通过getBean()方法从容器获取指定的bean实例,容器首先会调用Bean类的无参构造器,创建实例对象
Spring初学的更多相关文章
- Spring 初学笔记
Spring 初学笔记: https://blog.csdn.net/weixin_35909255/article/category/7470388
- Spring初学之spring的事务管理xml
所有的java类都是用的上一篇文章:Spring初学之spring的事务管理 不同的是,这时xml配置事务,所以就要把java类中的那些关于spring的注解都删掉,然后在xml中配置,Applica ...
- Spring 初学 1
Spring是一个轻量级的框架,他有自己的MVC框架SpringMVC,在以往的Web项目中大多采用Structs2+hibernate+Spring的框架,Structs做web层,Hibernat ...
- Spring初学(一)
Spring核心机制:依赖注入 依赖注入简单的理解就是 由Spring负责对model进行设置,而非由controller直接设置. 通过依赖注入,javaEE各种组件可以解耦. 依赖注入(Depen ...
- spring初学总结思路
spring初步学习总结 总概括有四个方面:IOC,AOP,JDBC,和事务管理 ioc:实现了new类的一个权力的反转.(平时new类导致代码冗余,手动new类无法满足动态new类的需求) aop: ...
- Spring初学之spring的事务管理注解
spring的事务管理,本文的例子是:比如你需要网购一本书,卖书的那一方有库存量以及书的价格,你有账户余额.回想我们在编程中要实现买书这样的功能,由于你的账户表和书的库存量表肯定不是同一张数据库表,所 ...
- Spring初学之使用JdbcTemplate
Spring中使用JdbcTemplate.JdbcDaoSupport和NamedParameterJdbcTemplate来操作数据库,但是JdbcTemplate最常用,最易用. jdbc.pr ...
- Spring初学之xml实现AOP前置通知、后置通知、返回通知、异常通知等
实现两个整数的加减乘除,在每个方法执行前后打印日志. ArithmeticCalculator.java: package spring.aop.impl.xml; public interface ...
- Spring初学之annotation实现AOP前置通知、后置通知、返回通知、异常通知。
实现两个整数的加减乘除.在执行每个方法之前打印日志. ArithmeticCalculator.java: package spring.aop.impl; public interface Arit ...
随机推荐
- 网页中使用CSS和JS阻止用户选择内容
CSS实现 body{ -webkit-user-select:none; -moz-user-select:none; -ms-user-select:none; user-select:none; ...
- JSP/Servlet Web 学习笔记 DaySix —— EL表达式
1)EL从scope中得到参数时可以自动转换类型,因此对于类型转换的限制更加宽松. 2)使用EL表达式,可以简化变量和对象的访问. 3)EL表达式必须以 ${XXXX} 来表示. 4)EL提供点(.) ...
- Android之使用JAVA占位符格式数据(很实用)
小编虽然是学java出生,但工作之后就一直从事android开发,很多java基础都忘记完了,最近一年从ES换到了AS,原来的很多习惯都收到了挑战,比如我喜欢ES写方法的时候先在JAVA projec ...
- Ajax 异步上传文件
需要引用js jquery.form 前端代码 <form action="/Save" id="mainForm" method="post& ...
- ASP.NET MVC5(四):数据注解和验证
前言 用户输入验证的工作,不仅要在客户端浏览器中执行,还要在服务端执行.主要原因是客户端验证会对输入数据给出即时反馈,提高用户体验:服务器端验证,主要是因为不能完全信任用户提供的数据.ASP.NET ...
- Linux版微信
一.到github上下载https://github.com/geeeeeeeeek/electronic-wechat/releases下载linux-x64.tar.gz,具体根据操作系统是32位 ...
- java IO文件操作简单基础入门例子,IO流其实没那么难
IO是JAVASE中非常重要的一块,是面向对象的完美体现,深入学习IO,你将可以领略到很多面向对象的思想.今天整理了一份适合初学者学习的简单例子,让大家可以更深刻的理解IO流的具体操作. 1.文件拷贝 ...
- python网络爬虫之初始网络爬虫
第一次接触到python是一个很偶然的因素,由于经常在网上看连载小说,很多小说都是上几百的连载.因此想到能不能自己做一个工具自动下载这些小说,然后copy到电脑或者手机上,这样在没有网络或者网络信号不 ...
- (cljs/run-at (JSVM. :browser) "搭建刚好可用的开发环境!")
前言 书接上一回,在了解cljs基本语法后并在clojurescript.net的奇特错误提示后,我们必须痛定思痛地搭建一个本地的开发环境,以便后续深入地学习cljs. 现有的构建工具 由于浏览器 ...
- java 获得当前时间 年月日时分秒 星期几
<%SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");//设置日期格式SimpleDat ...