Spring(0)

0) Spring的helloWorld

https://blog.csdn.net/cflys/article/details/70598903

当我们没有使用Spring的时候,调用sayHello()方法需要3步:
    1.创建一个HelloWorld的实例对象
    2.设置实例对象的name属性
    3.调用对象的sayHello()方法

使用Spring需要3步:(已经配置好Spring的xml配置文件)
    1.创建一个Spring的IOC容器对象:    ApplicationContext context=new ClassPathXmlApplicationContext("spring-config.xml");

      ApplicationContext代表IOC容器 ,是一个接口;ClassPathXMLApplicationContent是它的一个实现类。

2.从IOC容器中获取Bean实例          HelloWorld helloWorld=(HelloWorld) context.getBean("helloWorld");

      有多个获取bean的方式;

3.调用sayHello()方法                       helloWorld.sayHello();

Spring做了什么?

创建实例对象,配置对象的属性。

1)Spring是什么?

Spring是一个IOC(DI)和AOP容器的框架 --------控制反转,依赖注入,面向切面编程

IOC(Inversion of Control)----控制反转,反转资源获取的方向

DI(Dependency Injection)----依赖注入,IOC的另一种表达方式

如何配置Bean属性:

  1) 配置关于对象

  2) list

  3) map

  4) 集合bean

  5) p标签

自动装配Bean

Bean之间的关系(继承,依赖):继承Bean配置,父Bean可以设置为抽象Bean   (abstract="true")

Bean的生命周期:在Bean声明里设置init-method 和 destroy-method 方法,指定类的某个方法为初始化方法销毁方法。 init-meethod=“init1”   // init 为类里边的方法

          Bean的后置处理器:配置Bean的那个方法实现BeanPostProcessor接口(配置的bean不需要给ID,IOC容器会自动识别是一个后置处理器),并实现两个方法,一个在init-method之前          调用,一个在之后调用。会处理所有的Bean,所以要处理某个类型的Bean时,要进行过滤。

AOP面向切面编程:

  Aspect:切面:基础知识:https://blog.csdn.net/u013782203/article/details/51799427

  注解:

    @pointcut:切入点 表达式

    @order:优先级

    @before:前置通知

使用AspectJ框架:https://blog.csdn.net/gavin_john/article/details/80156963

          http://baimoz.me/1057/

AspectJ基础实战:https://www.cnblogs.com/Lemonades/p/11050278.html

AspectJ遇到的坑:

报错信息:

Exception in thread "main" java.lang.ClassCastException: class com.sun.proxy.$Proxy9 cannot be cast to class SpringAOP2.AtithmeticCalculatorImpl

解决方法1:在AOP里面设置proxy-target-class="true"属性

        <aop:aspectj-autoproxy proxy-target-class="true">
        </aop:aspectj-autoproxy>

解决方法2:报这个错,只有一个原因,就是转化的类型不对.

接口过父类的子类,在强制转换的时候,一定要用接口父类来定义。!!

        //由于AtithmeticCalculatorImpl实现了AtithmeticCalculator接口,所以强制转换必须用父类AtithmeticCalculator来定义
        AtithmeticCalculator atithmeticCalculator=(AtithmeticCalculator)context.getBean("atithmeticCalculatorImpl");

原文地址:https://www.cnblogs.com/Lemonades/p/10970090.html

时间: 2024-11-07 16:09:02

Spring(0)的相关文章

8 -- 深入使用Spring -- 0...

要点梗概: 利用后处理器扩展Spring容器 Bean后处理器和容器后处理器 Spring3.0 的"零配置" 支持 Spring的资源访问策略 在ApplicationContext中使用资源 AOP的基本概念 AspectJ使用入门 生成AOP代理和AOP代理的作用 基于Annotation的"零配置"方式 基于XML配置文件的管理方式 Spring的事务策略 Spring 2.X 的事务配置 Spring整合MVC框架的策略 Spring整合Struts2 S

SSH——Struts2中引入Spring

一,为什么要使用Spring 1,装配JavaBean 摒弃老旧的new方式,spring为我们提供了一种机制,使得创建javaBean以及设置javaBean属性的工作可以通过配置文件以及Spring框架本身来完成.这样,当某些地方需要改变时,修改Spring的配置文件即可.这个过程实际上就是Spring框架通过读取相应的配置文件中的内容,并根据这些配置自动装在javaBean对象,设置JavaBean的属性. 2,整合第三方框架. spring的设计理念就是尽可能整合第三方框架,使得这些被整

Spring表达式语言:SpEL语法

Spring表达式语言简称:SpEL,SpEL既可以独立于Spring容器使用,,也可以在Spring配置文件中使用,这样就大大简化了Spring的Bean配置,给配置文件起到了"减肥"的作用,下面开始总结SpEL语法 1:直接量表达式 直接量表达式也是SpEL最简单的表达式,如下: public class SpelGrammar { public static void main(String[]args) { // 创建一个ExpressionParser对象,用于解析表达式 E

『互联网架构』软件架构-spring源码之spring结构概述

spring从07年接触到目前2018年也差不多10年了,一个java的框架为什么能火这么多年.很多人对spring的使用轻车熟路,但是从未解读过spring的源码,老铁跟我一起看看源码,了解下内部的构造,只有源码读过的人才能获得上乘武功,软件开发不只是搬砖的老铁.内功熟悉原理,外功是灵活使用.内功好比电力,外功好比电机.内功的电力越强,电机的马力越大才能发挥巨大作用,相反如果电力弱,马力在强也是不行的.spring从单一的jar包,发展到现在十多个jar包,spring mvc 到spring

spring 历史&amp;哲学

历史: 要谈Spring的历史,就要先谈J2EE.J2EE应用程序的广泛实现是在1999年和2000年开始的,它的出现带来了诸如事务管理之类的核心中间层概念的标准化,但是在实践中并没有获得绝对的成功,因为开发效率,开发难度和实际的性能都令人失望. 曾经使用过EJB开发J2EE应用的人,一定知道,在EJB开始的学习和应用非常的艰苦,很多东西都不能一下子就很容易的理解.EJB要严格地实现各种不同类型的接口,类似的或者重复的代码大量存在.而配置也是复杂和单调,同样使用JNDI进行对象查找的代码也是单调

Spring框架的演变

什么是Spring 如果想要解释Spring,那么最难的部分就是对其进行分类.通常情况下,Spring被描述为构建Java应用程序的轻量级框架,但这种描述带来了两个有趣的观点. 首先,与许多其他框架(比如仅限于Web应用程序的Apache Struts)不同,可以使用Spring构建Java中的任何应用程序(例如,独立的应用程序.Web应用程序或JEE应用程序). 其次,该描述中轻量级的,因为只需要对应用程序代码进行很少的更改(如果有的话)就可以获得Spring Core所带来的好处.如果想要在

Spring(一)开篇

目录 1.Spring 介绍 2.Spring 框架的演变 3.Spring 整体架构 Core Container Data Access/Integration Web AOP Test 最后 1.Spring 介绍 在早期 J2EE 时代,开发一个应用程序非常繁琐,先不说对象的创建及管理,如其它数据库访问.提供 Web 服务等都需耗费我们大量时间.当时一位名为 Rod Johnson 的澳大利亚人率先对这种 J2EE 系统框架臃肿.低效的种种现状提出了质疑,之后 Rod Johnson 编

JavaScript实现Select选择本周、上周、本季、上季、本年的时间选取

//转自http://blog.csdn.net/xc_young/article/details/16878849,其上季度有错误,已修改 var MrYangUtil = function () { this.getCurrentDate = function () { return new Date(); }; this.getCurrentWeek = function () { //起止日期数组 var startStop = new Array(); //获取当前时间 var cur

html5跟随鼠标炫酷网站引导页动画特效

html5跟随鼠标炫酷网站引导页动画特效一款非常不错的引导页,文字效果渐变,鼠标跟随出绚丽的条纹.html5炫酷网站引导页,鼠标跟随出特效. 体验效果:http://hovertree.com/texiao/html5/ 效果图: 以下是源代码: 1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Co