spring4.x系列学习笔记(五)

一:xml方式实现配置

方法注入:lookup方式配置xml文件bean中实现自动生成接口的实例方法达到bean的prototype模式(每次调用生成一个新的依赖对象,依赖对象本身需要标注为prototype)。另外一种方式是重新定义一个类继承MethodReplacer接口,并返回需要的依赖对象,在配置bean时指定用<replaced-method>标签替换达到每次重新生成一个依赖对象。

【lookup方式有一定的适用范围,因为很好定义一个接口的实现类,在实现类中用属性注入的方式很容易达到相同目的】


作用域:singleton,prototype,session,request,globalsession后面3个是基于webapplicationcontext。

使用后面3个作用域需要配置listener,在web.xml文件中配置

    <listener>
  <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> 
  </listener>


作用域依赖问题:域之间跨依赖对象需要使用AOP解决。使用方式是宿主对象正常模式配置bean和对应的依赖项,被注入对象需要设置具体的域如:scope=“request”,在标签内部使用<aop:scoped-proxy/>创建代理对象,这样singleton对象就能通过代理判断在哪个线程中,并获取该线程下的对象。此处使用的原理是aop动态代理技术首先创建引用对象的代理,在注入到宿主对象时已经不是原来的对象类型了,已经变成注入的是代理对象,在代理对象内部spring做了一些逻辑,以判断当前宿主对象应该从哪个http请求中获取对象。(该标签也适用于singleton获取prototype对象)

【实现逻辑很简单,先判断宿主对象在哪个线程中,然后在该线程中找到对应的域对象比如:httprequest,然后在该对象中找到具体的注入对象】,由于java要求只能给接口创建动态代理,如果要给类添加动态代理需要添加CGLib的jar包


二:注解方式实现配置

注解关键词:

@Component相当于xml中的bean开始,是注解方式的总描述,以下三个是针对@Component的分类标注

@Repository:针对DAO实现类标注

@Service:对service实现类标注

@Controller:对controller实现类标注


可以在配置文件中使用context命名空间的component-scan对标注了以上关键字进行扫描,通过base-package制定需要扫描的包。

使用@Autowired按照类型在spring容器中查找自动装配的依赖对象并装入。如果容器中有多个按照类型匹配的bean@Qualifier可以实现进一步按照名称筛选。@Scope定义bean的作用域,bean在自动装配时和容器销毁时提供了响应方法的调用:@PostConstruct(自动装载前),@PreDestroy(容器销毁前)。







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值