Spring注入的方式有三种:
<一>接口注入 --------通过实现一个接口来实现对依赖对象的注入 xml文件beans配置,对象用property设置。
<二>set值注入--------通过写以来对象的set方法来实现注入 xml文件beans配置,对象用property设置。
<三>构造子注入-------通过构造函数来对依赖对象进行注入 xml文件beans配置,对象用constructor-arg index="" type=""设置。 String类型不能用type指定类型,不写就行了。数字类型一定要设值。
bean的属性:
<一>id和name属性基本上是相等的,只是XML规定id属性不能带特殊字符。但是name没有特殊的规定,
理论上讲一个bean只能有一个id。如果一个bean他有多id则可以认为是他的别名。
<二>class属性既表示bean的资源,是bean的实际路径。
<三>depends-on属性表示在初始化使用bean之前,强制执行一个或者多个bean的初始化。
<四>singleton用来标志bean是否是单态(单列)模式。
bean的生命周期: 定义->初始化->使用->销毁
<一>定义---通过配置文件来定义
<二>初始化----------1在配置文件中指定init-method属性增加init()方法完成,2实现initializingBean接口,增加方法
afterPropertiesSet()来实现。
<三>使用(bean的三种管理)-----1--//HelloWorld hellworld = new HellWorld();
Object obj = Class.forName("com.gc.action.HelloWorld").newInstance();
BeanWrapper bw = new BeanWrapperImpl(hellworld);
bw.setProertyValue("msg","HellWorld");
System.out.println(bw.getPropertyValue("msg"));
-----2------//InputStrean is = new FileInputStrean("config.xml");
//ClassPathResource res = new ClassPathResource("config.xml");
Resource rs = (Resource)new FileSystemResource("bean.xml");
XmlBeanFactory factory = new XmlBeanFactory(is);
HelloWorld helloworld = (HelloWorld)factory.getBean("HelloWorld");
System.out.println(helllworld.getMsg());
-----3------ApplicationContext atx = new FileSystemXmlApplicationContext("config.xml");
HelloWorld helloworld = (HelloWorld)atx.getBean("HelloWorld");
System.out.println(helloworld.getMsg());
获取FactoryBean,在调用BeanFactory和ApplicationContext的getBean方法的时候,在传入的参数bean id前面加一个&符号,对于BeanFactory调用,getBean("myBean")将会返回FactoryBean的产品,而调用getBea("&myBean")将会返回这个实例的本身。
<四>销毁------------1,通过在配置文件的destroy-method属性设置cleanup()来完成。2,实现DisposableBean接口增加destroy()方法。
ref属性指定依赖的三中模式:
<一>用local属性指定----只能引用同一个XML文件中的bean,只能匹配id属性,如果在本文件找不到bean,解析器就会报错。
<二>用bean属性指定-----这是最常见的一种形式,可以引用同一个XML和不同的XML文件的中bean,可以匹配id和name属性。
<三>用parent属性来指定----允许引用当前BeanFactory或ApplicationContext的父BeanFactory或ApplicationContext中的bean,匹配 id和name属性。
bean自动装配的五的模式:
<一>autowire=byName------通过bean属性的名字进行自动装配。
<二>autowire=byType------通过属性匹配的类型进行装配。如果有多一个类型的bean就抛出异常。
<三>autowire=constructor-----通过构造函数的参数进行装配。
<四>autowire=autodelect-----通过对类的内部选择constructor和byType,先找到constructor就用constructor,没有用byName。
<五>autowire=no--------这表示bean的装配不需要用自动装配。
bean的依赖检查的四种模式
<一>dependency-check=simple----对简单的依赖对象进行检查。
<二>dependency-check=object-----对所有的依赖对象进行检查
<三>dependency-check=all------对所有的属性进行检查
<四>dependency-check=none------不对任何依赖对象进行检查
bean的作用域
<一>singleton----在每个Spring IoC容器中一个bean定义对应一个对象实例。
<二prototype----一个bean定义对应多个对象实例。
<三>request----在一次HTTP请求中,一个bean定义对应一个实例;即每次HTTP请求将会有各自的bean实例,它们依据某个bean定义创建而成。该作用域仅在基于web的Spring ApplicationContext情形下有效。
<四>session----在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。
<五>global session----在一个全局的HTTP Session中,一个bean定义对应一个实例。典型情况下,仅在使用portlet context的时候有效。该作用域仅在基于web的Spring ApplicationContext情形下有效。
集合的注入方式 List--set--map--properties
<一>list--------<property name="msg">
<list>
<value>asdf</value>...
</list>
</property>
<二>set--------<property name="msg">
<set>
<value>asdf</value>...
</set>
</property>
<三>map--------<property name="msg">
<map key="aa">
<entry><value></value></entry>
</map>.....
</property>
<四>property---<property name="msg">
<props>
<prop key="fads">fdafdsf</prop>
</props>.....
</property>
ApplicationContext国际化的支持
<一>Application加载时查找定义的messageRource。Spring约定这个bean必须定义这个。class=ResourceBundleMessageResource
<二>国际化文件名后缀.properties 和.calss。native2ascii message.properties message.txt。
ApplicationContext三种资源访问
<一>通过虚拟路径访问----Application atx = new FileSystemXmlApplicationContext("config.xml");
Resource resource = atx.getResource("classpath:message.properties");
<二>通过实际路径访问----Resource resource = atx.getResource("file:d:/workspace/WEB-INF/message.properties");
<三>通过相对路径访问----Resource resource = atx.getResource("WEB-INF/src/message.properties");
ApplicationContext事件传递
--------ApplicationContext中的事件处理是通过ApplicationEvent类和ApplicationListener接口来提供的。通过 ApplicationContextAware的pulishEvent()方法来通知ApplicationListener。
Spring的三种切入点(Pointcut)实现
<一>静态切入点----不可以指定方法参数,能缓存----RegexpMethodPointcut----<property name="patterns">
<list>
<value>.*do.*</value>.*do.*,表示所有do开头的方法都是切入点。
</list>
</property>
<二>动态切入点-------可以指定方法的参数,不能缓存,有很大的性能耗损。
<三>自定义切入点-----AOP还没有完全成熟,Spring提供的文档在这方面也没有提供更详细的解释。
Spring的五种通知(advice)
<一>Interception Around--------连接点(JointPoint)前后调用
<二>Before---------------------连接点(JointPoint)前调用
<三>After Returning------------连接点(JointPoint)后调用
<四>Throw----------------------连接点(JointPoint)抛出异常调用
<五>Introduction---------------连接点(JointPoint)调用完毕后调用
用ProxyFactoryBean创建AOP代理
<一>使用ProxyFactoryBean代理目标类的所有方法和指定方法。
<二>ProxyFactoryBean的proxyInterfaces属性是指明要代理的目标口
<三>ProxyFactoryBean的target属性指明代理的目标类,这个目标实现了上面的proxyInterfaces属性指定的接口。
<四>ProxyFactoryBean的interceptorNames属性指明要在代理的目标类中插入的通知(advice)。
<五>proxyFactoryBean的proxyTargetClass属性设定为true,说明proxyFactoryBean代理的不是接口类,而是CGLIB方式进行代理。
正则表示式的介绍
<一>.---表示用来匹配任何一个字符。
<二>[]---只有[]里指定的字符才能匹配。
<三>*----表示匹配次数,为任意次。
<四>?----可以匹配零次和一次。
<五>\----是正则表达式的连接符。
Spring中AOP的两种代理方式
<一>java动态代理
<二>CGLIB代理
分享到:
相关推荐
Spring基础教学视频,四天课时,视频很清楚讲的很仔细
Spring基础概念,简单的描述javaSpring框架概述,SpringAOP,Spring IOC
Spring基础培训ppt
Spring基础教程.pdf
Spring基础知识汇总 Java开发必看
spring基础教程spring基础教程spring基础教程spring基础教程
《Spring基础进阶技巧200篇》是一本关于Spring框架的资源,它提供了200篇文章,涵盖了Spring框架的基础知识和进阶技巧。这本资源可以帮助开发人员更好地理解和应用Spring框架,提升开发效率和代码质量。 该资源主要...
Spring基础:Spring AOP简单使用
springweb开发的基础jar包
Spring基础jar包,可以搭建Spring环境,运行使用基本功能
Spring框架的五个jar包,其中有Spring-beams、Spring-Context、Spring-Core、commons-logging、Spring-expression
北大青鸟spring基础课件,讲解spring的基础
spring基础示例,包含基本的bean装配和注入,采用原生bean管理、xml配置和注解相对比的方式示例。
spring 基础入门 经典spring 基础入门 经典spring 基础入门 经典spring 基础入门 经典spring 基础入门 经典
Spring框架搭建必导jar包
java Spring基础教程
spring基础操作教程spring基础操作教程spring基础操作教程spring基础操作教程spring基础操作教程