Spring 学习记录5 BeanFactory】的更多相关文章

主题 除了Spring 学习记录5 BeanFactory 里写的几个接口外,BeanFactory的实现类还实现了一些其他接口,这篇文章主要介绍这些接口和实现类. 结构 DefaultListableBeanFactory和它的父类们除了实现了BF的各种接口以外还实现了AliasRegistry和BeanDefinitionRegistry接口.而且不同等级的父类和BF的相关接口都有交集.. AliasRegistry 这个接口根据说明来看意思是提供别名注册的服务.虽然没有实际使用过别名,不过…
主题 记录我对BeanFactor接口的简单的学习. BeanFactory我感觉就是管理bean用的容器,持有一堆的bean,你可以get各种bean.然后也提供一些bean相关的功能比如别名呀之类的.. 结构 我觉得核心功能都写在了3个子接口里面了. 小实验: /** * 测试BeanFactory */ @Test public void testBeanFactory() { BeanFactory beanFactory = this.applicationContext; Syste…
主题 接上文Spring 学习记录7 初识XmlWebApplicationContext refresh方法 refresh方法是定义在父类AbstractApplicationContext中的.它内部会调用很多方法.有一些是在子类中实现的.算是模板方法的设计模式吧.主要作用就是初始化wac加载各种bean等作用. @Override public void refresh() throws BeansException, IllegalStateException { synchroniz…
本篇就简单的说一下Bean的装配和AOP 本篇的项目是在上一篇我的Spring学习记录(一) 中项目的基础上进行开发的 1. 使用setter方法和构造方法装配Bean 1.1 前期准备 使用setter方法注入依赖其实在上一篇中已经遇到过了主要通过property在bean中进行注入 <!--声明一个bean并且指定相应的类--> <bean name="dog" class="cn.lger.domain.Dog"> <proper…
虽然Spring管理这我们的Bean很方便,但是,我们需要使用xml配置大量的Bean信息,告诉Spring我们要干嘛,这还是挺烦的,毕竟当我们的Bean随之增多的话,xml的各种配置会让人很头疼. 所以我们需要一种东西来解决这个问题,这就是--注解,这次我们使用注解来将我们学过的所有东西重新做过一遍. 1. 了解注解 1.1 定义 注解是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在包.类.字段.方法.局部变量.方法参数等的前面,用来对这些元素进行说明,注释…
在我的Spring学习记录(四)中使用了注解的方式对前面三篇做了总结.而这次,使用了用户登录及注册来对于本人前面四篇做一个应用案例,希望通过这个来对于我们的Spring的使用有一定的了解. 1. 程序描述 首先,介绍一下这个程序具体是怎么走的. 我这里使用了画图软件简单的画了大概程序是怎么走的(有点难看,别介) 具体的描述就是,用户可以访问登录或者注册的页面,登录成功返回成功的页面,失败则反之.对于注册页面注册成功则为用户添加注册成功的奖励--10块钱(先别管这个合不合理),失败则返回失败页面.…
ConversionService与Environment的关系 通过之前的学习(Spring 学习记录2 Environment),我已经Environment主要是负责解析properties和profile...但是它虽然实现了相关的接口,但是具体工作并不是由它本身处理,而是委托了其他的类来帮忙..properties相关的接口方法最终主要是通过PropertySourcesPropertyResolver这个类来处理的..(它们实现了相同的接口) 在通过Environment使用prop…
1. 使用静态工厂方法创建Bean,用到一个工厂类 例子:一个Car类,有brand和price属性. package com.guigu.spring.factory; public class Car { private String brand; private double price; public Car(){ } public Car(String brand,double price){ this.brand=brand; this.price=price; } public S…
SpEL---Spring Expression Language:是一个支持运行时查询和操作对象图表达式语言.使用#{...}作为定界符,为bean属性动态赋值提供了便利. ①对于普通的赋值,用SpEL也可以,但意义不大,如: 整数:<property name="count" value="#{5}"> 小数:<property name="frequency" value="#{89.5}"> 字…
spring是一个框架,一个我理解为对象的大熔炉,它生产着各种bean,还可以对生产的对象进行加工. 这里有些概念需要理解一下,就是IOC和DI以及AOP,接下来,我们进入主题. spring简介 上图是官方直接copy下来的,主要是说明了各个组件的应用情况,在博客中的项目主要是应用了spring的核心容器部分. 简介这个概念性的东西我们可以先看下百度百科的解释,因为我觉得我还不是很够格,而且我的表述能力一直是诟病 还有就是上面说到的几个概念性的东西,我们一 一看来: IOC,我们把它翻译为控制…
先看一些定义: 在Spring JDBC模块中,所有的类可以被分到四个单独的包:1.core即核心包,它包含了JDBC的核心功能.此包内有很多重要的类,包括:JdbcTemplate类.SimpleJdbcInsert类,SimpleJdbcCall类,以及NamedParameterJdbcTemplate类.2.datasource即数据源包,访问数据源的实用工具类.它有多种数据源的实现,可以在JavaEE容器外部测试JDBC代码.3.object即对象包,以面向对象的方式访问数据库.它允许…
起因 学习Spring的时候就知道aop有一个应用是声明式注解..反正往Service上一丢@Transactional就完事了..不用自己去开启hibernate的session,很简单. 但是@Transactional里有很多属性一直没有用过...其中最让我在意的便是Propagation属性...其他属性都还是蛮好理解的..但是这个属性一直不怎么懂,也一直没怎么去研究.. 大部分情况下的确是使用@Transactional不用额外设置就OK了.因为默认的Propagation是Propa…
之前学了,配置bean可以用普通全类名配置.用工厂方法配置,FactoryBean又是什么呢 有时候配置bean要用到,IOC其他Bean,这时,用FactoryBean配置最合适. FactoryBean是一个接口,要用的话就要实现它.他有三个方法: getObject()  //返回bean对象 getObjectType()  //返回bean的类型  isSingleton()   //是否单例 弄个例子: Car类 package com.guigu.spring.factorybea…
下载spring包,在eclipse搭建spring环境. 这步我在eclipse中无法导入包,看网上的: http://sishuok.(和谐)com/forum/blogPost/list/2428.html 建一个java project 三个java文件,一个xml文件 package com.guigu.spring.beans; public class HelloWord { private String name; public String getName() { return…
Spring bean container 的根接口,也是一个bean容器的基本功能,更深一步的接口像ListableBeanFactory 和 ConfigurableBeanFactory 都是 为特殊目标设计的 这个接口的实现将维护一定属性的的bean定义,每个bean用一个唯一的字符串名字来识别. This interface is implemented by objects that hold a number of bean definitions,each uniquely id…
学习了AOP之后就可以应用一下了,所以这次我们了解一下Spring的声明式事务. 事务在我们的很多方面都可以体现,就拿我们平时的买卖活动,或者是银行的转账来说,这些活动要么是成功,要么是失败,比如:张三给李四转账100块钱,我们的实现是张三的账户划掉100然后李四的账户加上100,这是一个整体,要么成功,要么失败.我们不可能说张三的账户少了钱,但是因为某种原因导致李四的账户没多钱.所以说我们要通过某种机制保证这个整体活动的成功.接下来进入主题. 1. Spring事务简介 1.1 事务的四要素…
Java类定义配置@Configuration //标记为配置类@ComponentScan //标记为扫描当前包及子包所有标记为@Component的类@ComponentScan(basePackageClasses = {接口.class,...}) //标记为扫描当前包及子包所有标记为@Component的类@ComponentScan(basePackages = {包名,包名,...}) //标记为扫描当前包及子包所有标记为@Component的类定义组件@Component //标…
Environment是什么 environment是什么呢....中文是环境大家都知道但是具体代表什么呢?感觉很抽象....从代码里的解释来看environment代表了profile和properties. profile就是1组bean的定义.实际用途就是在不同环境比如测试环境和生产环境中加载不同的bean达到根据环境加载bean的用途.(因为测试环境可能有些bean是模拟的,比如接口.调用返回的报文都是自己模拟的,真实的bean在测试环境拿不到). properties就不用说了.就是配…
主题 之前Spring相关的一些类,比如Enviromnent,BenFactory都接触了一些.有一些收获.但是直接看代码很多方法都不知为什么这样写.哪里会用到.因为太底层了.不好理解..现在从高层次的调用开始再研究下.应该会有新的理解. 所以从一个Web应用初始化开始学习.看看它经历了哪些步骤.做了哪些事情. 之前对spring的dispatcherServlet有一点点研究(http://www.cnblogs.com/abcwt112/p/5283674.html). ContextLo…
ResourceLoader Spring的ApplicationContext继承了ResourceLoader接口.这个接口主要就是可以加载各种resource.. 接口还是比较简单的: /* * Copyright 2002-2014 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this f…
1.Spring简介 Spring是一个轻量级的java开发框架.框架的主要优势之一就是分层架构,Spring使用基本的JavaBean,不仅限于服务器的开发.从简单性,可测试性和松耦合的角度而言,任何java应用都可以从spring中受益. Spring的核心就是控制反转(IOC)和面向切面(AOP).简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式)轻量级开源框架 1.1 为什么要使用Spring (1) 方便解耦,简化开发:Spring就是一个大工厂,可以…
SpringAOP基础 AOP简介: AOP是Aspect Oriented Programing的简称,翻译为“面向切面编程”.它适用于具有横切逻辑的应用场合,如性能检测,访问控制,事务管理及日志记录. 在开发中,在业务层有时会涉及到事务的处理和性能检测,例如粗体是事务有关的代码,这些代码和业务逻辑混合在了同一个方法中. 很多时候这些代码和业务逻辑没法分离,并且这些代码是重复代码,AOP通过横向抽取机制为这类代码提供解决方案.AOP将这些分散在各个业务逻辑的代码中的相同代码通过横向切割的方式抽…
简单的了解Spring容器内部工作机制 Spring的AbstractApplicationContext是ApplicationContext的抽象实现类,该抽象类的refresh()方法定义了Spring容器在加载配置文件后的各项处理过程,这些处理过程清晰刻画了Spring容器启动时所执行的各项操作.    (1)初始化BeanFactory:根据配置文件实例化BeanFactory,在obtainFreshBeanFactory()方法中,首先调用refreshBeanFactory()方…
IoC容器 1.1  IoC概述 Ioc(Inverse of Control,控制反转)是Spring容器的内核.对于软件来说,即某一接口具体实现类的选择控制权从调用类中移除,转交给第三方决定,即由Spring容器借由Bean配置来进行控制.也被称作DI(Dependency Injection,依赖注入),即让调用类对某一接口的实现类的依赖关系由第三方(容器或协调类)注入,可以移除类之间的依赖关系. 1.2 IoC的类型 从注入方法上看,IoC主要划分为3种类型:构造函数注入.属性注入和接口…
上一篇讲了用注解配置AOP,现在讲用xml怎么配置AOP 其实逻辑是一样的,只是用xml的方法,要把这种逻辑写出来,告诉spring框架去执行. 例子:这里的例子和上一篇的例子一样.换成xml方式 //方法接口 package com.atguigu.spring.aop.impl; public interface Calculator { public int add(int i,int j); public int sub(int i,int j); public int div(int…
Spring核心之二:AOP(Aspect Oriented Programming) --- 面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型.利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率. 专业术语: Joinpoint(连接点): 所谓连接点是指那些被拦截到的点.在spri…
Spring支持用注解配置Bean,更简便. 上面的组件,是根据实际情况配的.比如写的一个类,是做业务处理的,那就用注解@Service表示服务层组件,以此类推.将整体分成不同部分. 要在xml加入context命名空间 <!-- 指定Spring IOC容器扫描的包 --> <context:component-scan base-package="package com.guigu.spring.beans.annotation"></context:…
之前说过,在调用下面时,就创建了容器和对象 ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml"); 那它又是怎样一步步创建的呢?要销毁怎么销毁? 用一个例子来看 package com.guigu.spring.Car; public class Car { private String brand; public Car(){ System.out.println("构造函数..&qu…
作用域:singleton:单例,整个应用中只创建一个实例(默认) prototype:原型,每次注入时都新建一个实例 session:会话,每个会话创建一个实例 request:请求,每个请求创建一个实例 默认情况下,bean都是单例的,在下面这样时初始化,调用各个bean的构造函数 <bean id="person" class="com.guigu.spring.autowire.Person" p:name="Tom" >&l…
     继承 这里说的继承和java的继承是不一样的,不是父类子类.但思想很相似,是父bean和子bean 1.父bean是一个实例时.它本身是一个完整的bean 2.父bean是模板,抽象bean,不能被实例化,只是来被继承. 当遇到一个类要实例化出很多相似的bean对象时,如下,看起来是不是很不简洁 <bean id="address1" class="com.guigu.spring.autowire.Address" p:city="Bei…