一。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初学的更多相关文章

  1. Spring 初学笔记

    Spring 初学笔记: https://blog.csdn.net/weixin_35909255/article/category/7470388

  2. Spring初学之spring的事务管理xml

    所有的java类都是用的上一篇文章:Spring初学之spring的事务管理 不同的是,这时xml配置事务,所以就要把java类中的那些关于spring的注解都删掉,然后在xml中配置,Applica ...

  3. Spring 初学 1

    Spring是一个轻量级的框架,他有自己的MVC框架SpringMVC,在以往的Web项目中大多采用Structs2+hibernate+Spring的框架,Structs做web层,Hibernat ...

  4. Spring初学(一)

    Spring核心机制:依赖注入 依赖注入简单的理解就是 由Spring负责对model进行设置,而非由controller直接设置. 通过依赖注入,javaEE各种组件可以解耦. 依赖注入(Depen ...

  5. spring初学总结思路

    spring初步学习总结 总概括有四个方面:IOC,AOP,JDBC,和事务管理 ioc:实现了new类的一个权力的反转.(平时new类导致代码冗余,手动new类无法满足动态new类的需求) aop: ...

  6. Spring初学之spring的事务管理注解

    spring的事务管理,本文的例子是:比如你需要网购一本书,卖书的那一方有库存量以及书的价格,你有账户余额.回想我们在编程中要实现买书这样的功能,由于你的账户表和书的库存量表肯定不是同一张数据库表,所 ...

  7. Spring初学之使用JdbcTemplate

    Spring中使用JdbcTemplate.JdbcDaoSupport和NamedParameterJdbcTemplate来操作数据库,但是JdbcTemplate最常用,最易用. jdbc.pr ...

  8. Spring初学之xml实现AOP前置通知、后置通知、返回通知、异常通知等

    实现两个整数的加减乘除,在每个方法执行前后打印日志. ArithmeticCalculator.java: package spring.aop.impl.xml; public interface ...

  9. Spring初学之annotation实现AOP前置通知、后置通知、返回通知、异常通知。

    实现两个整数的加减乘除.在执行每个方法之前打印日志. ArithmeticCalculator.java: package spring.aop.impl; public interface Arit ...

随机推荐

  1. ACL2016信息抽取与知识图谱相关论文掠影

    实体关系推理与知识图谱补全 Unsupervised Person Slot Filling based on Graph Mining 作者:Dian Yu, Heng Ji 机构:Computer ...

  2. 11.并发包阻塞队列之LinkedBlockingQueue

    在上文<10.并发包阻塞队列之ArrayBlockingQueue>中简要解析了ArrayBlockingQueue部分源码,在本文中同样要介绍的是Java并发包中的阻塞队列LinkedB ...

  3. window.close()方法对谷歌和火狐浏览器无效

    在近期的项目中,遇到了一个问题,就是用户到新浪支付进行操作,操作成功后,指定到一个网页,需求是点击确定,关闭该网页.需求出来以后认为这种就是小菜一碟,直接用 window.close()方法就可以实现 ...

  4. Solr集群搭建

    SolrCloud需要solr基于zookeeper部署,zookeeper是一个集群管理软件,由于SolrCloud需要由多台服务器组成.由zookeeper来进行协调管理.Zookeeper是一个 ...

  5. 版本控制工具svn的安装与简单使用

    版本控制工具多用于多人协作开发项目中,这不同于个人开发项目,想把自己代码怎样放置都可以,而且删除了代码很难查找. 版本控制工具类似于个人处理钱的过程,放于自己口袋管理类似于个人开发情形,如果自己钱丢了 ...

  6. 对象的序列化与反序列化-serialize与unserialize

    1. 简介 对象的序列化的基本概念: 所谓对象的序列化,就是可以把某个对象的属性名称,属性值, 属性类型,类名 以字符串的形式保存到文件中,在你需要的时候可以重新恢复. 对象的反序列化的基本概念, 是 ...

  7. Apache和PHP环境配置

    最近闲来想学习一下PHP. 工欲善其事,必先利其器.我的PHP环境配置了三遍,才安装成功. 下面就分享一下我的安装经验. 1.Apache2.4,PHP5.6,MySql5.6这些都是从官网下载的. ...

  8. .Net WebApi基本操作

    一.服务端 1.新建webapi项目 2.配置WebApiConfig public const string DEFAULT_ROUTE_NAME = "DB";// DB指数据 ...

  9. 通过位异或来交换a,b的值和通过中间变量交换a,b的值

    //通过位异或来交换a,b的值 #include <stdio.h> int main(int argc, const char * argv[]) {    int a=20,b=10; ...

  10. Normalize.css源码注释翻译&浏览器css兼容问题的理解

    版本v5.0.0源码地址: https://necolas.github.io/normalize.css/5.0.0/normalize.css 翻译版: /*! normalize.css v5. ...