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 ...
随机推荐
- mysql之 innobackupex备份+binlog日志的完全恢复(命令行执行模式)
前言:MySQL的完全恢复,我们可以借助于完整的 备份+binlog 来将数据库恢复到故障点.备份可以是热备与逻辑备份(mysqldump),只要备份与binlog是完整的,都可以实现完全恢复. 1. ...
- Vulkan Tutorial 13 Render passes
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 Setup 在我们完成管线的创建工作,我们接下来需要告诉Vulkan渲染时候使用的f ...
- 弹性盒模型 flex box
弹性盒子模型 布局方案 传统的布局方案大多采用div+css+float+position+display来实现,但是随着css3中弹性盒子模型的推出,在前端布局方案中就又多出了一项彪悍的选项. 而因 ...
- JDBC复习
-----------------------------------------JDBC复习----------------------------------------- 1.JDBC (Jav ...
- iptables实用教程(二):管理链和策略
概念和原理请参考上一篇文章"iptables实用教程(一)". 本文讲解如果管理iptables中的链和策略. 下面的代码格式中,下划线表示是一个占位符,需要根据实际情况输入参数, ...
- JS问题笔记——模拟Jq底层实现工厂模式
<script type="text/javascript"> (function (window,undefined){ function _$(arguments) ...
- Step by Step 用Azure Automation 来开虚机(ARM)
使用Azure Automation来自动化处理各种重复的耗时的云管理任务从而帮助云运维人员提升效率,帮助降低运营成本. 具体相关的介绍以及怎样利用Azure Automation来完成定期开关虚拟机 ...
- 解决Yii2邮件发送问题(结果返回成功,但接收不到邮件)
刚刚用了一下yii邮件发送功能,虽然结果返回成功,但接收不到邮件.配置文件代码如下: 'components' => [ 'db' => [ 'class' => 'yii\db\C ...
- PHP中常量和变量的区别
1.常量只能赋一次值: 以下是申请常量的两种方法: const THE_VALUE="one"; define("THE_VALUE","one&qu ...
- JS获取浏览器类型和版本号
JS获取浏览器类型和版本号,增加了IE11的判断. 2015/7/5更新: 简化代码逻辑 var zbrowser = {} var ua = navigator.userAgent.toLowerC ...