spring学习总结-第二讲

第二讲

一、两种后处理器:spring允许通过后处理器对IOC容器进行扩展。
  1. Bean后处理器:对容器中的Bean进行后处理,对Bean进行额外的加强。
    1. 需要实现一个接口BeanPostProcessor接口,包含两个方法:Object postProcessBeforeInitialization(Object bean,String name)Object postProcessAfterInitialization(Object bean,String name)
  2. 容器后处理器:对IOC容器进行后处理,用于增强容器功能。
    1. 需要实现接口postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory),无返回值。
二、注解
  1. @Component:注释一个普通的spring bean类。
  2. @Controller:标注一个控制器组件类。
  3. @Service:标注一个业务逻辑组件类。
  4. @Repository:标注一个DAO组件类。
三、使用注解的时候,需要在xml中配置扫描的路径(包的路径):<context:component-scan base-package=”cc.wsyw126”/>
四、可以在component-scan中使用
  1. <context:include-filter type=”regex” expression=”.*Chinese”/>:指定满足该规则的Java类会被当做一个bean类被管理。
  2. <context:exclude-filter type=”regex” expression=”.*Chinese”/>:指定满足该规则的Java类不会被当做一个bean类被管理。
五、使用@Scope(“prototype”)来标注bean的作用域为prototype。默认为singleton。
  1. 也可以自定义解析器实现ScopeMetadataResolver接口,并提供自定义的作用域解析策略,然后在配置扫描器时指定解析器的全限定类名即可:scope-resolver=”全限定类名”
六、@Resource(name=”id”):配置依赖。
  1. 可以标注在setter方法上。省略name属性时,name属性的值为去掉set,首字母小写后得到的字符串。
  2. 也可以标注在实例变量上()。省略name属性时,name属性的值为同实例变量同名。
七、生命周期行为
  1. @PostConstruct:作用同init-method。
  2. @PreDestroy:作用同destroy-method。
八、@DependsOn(“一个或多个依赖的对象ID”):用于强制初始化其他Bean。
九、@Lazy(“一个boolean型的值”):用于指定Bean是否取消预初始化。
十、@Autowired:可以修饰setter方法、普通方法、实例变量、构造器等。
  1. 当Autowired修饰setter方法时:默认采用byType自动装配策略。
    1. 找到一个,注入;多个,报异常;没有,什么都不做;
  2. Spring4.0之后的Autowired可以根据泛型进行自动。
  3. 修饰类A的集合属性时,spring会搜索容器中类A所有的实例,并以这些实例创建集合。
  4. 使用@Autowired@Qualifier(“bean的ID”)可以根据指定的Bean的ID进行装配。(不如直接使用@Resource执行依赖注入)
    1. @Qualifier可以和@Autowired一起放在实例变量之上,也可以不放在一起,放在setter的参数之前,而@Autowired放在实例变量之上。
十一、资源访问:访问各种类型的文件、二进制流等。
  1. UrlResource:访问网络资源的实现类。
  2. ClassPathResource:访问类加载路径里资源的实现类。
  3. FileSystemResource:访问文件系统里资源的实现类。
  4. ServletContextResource:访问相对于ServletContext路径下的资源的实现类。
  5. InputStreamResource:访问输入流资源的实现类。
  6. ByteArrayResource:访问字节数组资源的实现类。
十二、Spring提供了ResourceLoader和ResourceLoaderAware接口,在实现类中有getResource(String location)方法,获取Resource实例。
十三、访问资源时,也可以不理会ApplicationContext的实现类,强制指定ClassPathReource、FileSystemResource等实现类。通过不同的前缀指定:
  1. classpath:以ClassPathReource实例访问本地文件系统的资源。
  2. file:以UrlResource实例访问本地文件系统的资源。
  3. http:以UrlResource实例访问基于http协议的网络资源。
  4. 无前缀:由ApplicationContext的实现类来决定访问策略。
  5. 例子:Resource r = ctx.getResource(“classpath:beans.xml”);
十四、使用Resource作为属性:使用依赖注入。在xml配置中添加p:res=”classpath:beans.xml”
十五、在ApplicationContext中使用资源:
  1. 使用ApplicationContext实现类指定访问资源。
  2. 使用前缀指定访问资源。
  3. “Classpath*:beans.xml”:提供加载多个XML配置文件的能力。系统将搜索类加载路径,找出与文件名匹配的文件,分别加载文件中的配置,最后合并为一个ApplicationContext。注意:该方法仅对ApplicationContext有效,对Resource实例无效。
  4. “file:xxx”前缀:来区分相对路径和绝对路径。
    1. new FileSystemXmlApplicationContext(“file:beans.xml”); 相对路径。
    2. new FileSystemXmlApplicationContext(“file:beans.xml”); 绝对路径。

参考资料
轻量级Java EE企业应用实战(第4版)
备注
转载请注明出处:http://blog.csdn.net/wsyw126/article/details/51744375
作者:WSYW126

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值