Core technologies

1、dependency injection

说起依赖注入DI,我们常想起的就是在bean的xml文件中使用设值注入和构造注入的方式来实现,然后这也叫IOC。构造器注入实现很简单就是constructor-arg标签,

设值注入如下

 

 

依赖注入也叫控制反转,主要的目的是解决我们程序中对象之间不仅要处理自身业务逻辑还需要耦合其他bean的实际情况,通过控制反转我们能够实现各个功能模块相对独立。这么看起来好像是挺好的,但是项目发展起来之后,就会遇到配置文件膨胀的情况,这时候自动装配就出现了
自动装配xml的配置

 

 

自动装配注解:@Autowired,@Resource,@Inject,@Qualifier,@Named

 

构造型注解包括:@Controller,@Components,@Service,@Repository和使用@Component标注的自定义注解

 

2、events

Spring的事件分为内置事件和自定义事件,其中四个是上下文初始化,开始、停止和结束所发布的事件,还有一个是RequestHandledEvent告诉所有 bean HTTP 请求已经被服务。

内置事件通过实现ApplicationListener可以被通知到
自定义事件需要发布者,事件,监听者。

 

3、validation

做入参校验

 

4、data binding

Spring MVC 将 ServletRequest 对象传递给 DataBinder。
将处理方法的入参对象传递给 DataBinder。
DataBinder 调用 ConversionService 组件进行数据类型转换、数据格式化等工作,并将 ServletRequest 对象中的消息填充到参数对象中。
调用 Validator 组件对已经绑定请求消息数据的参数对象进行数据合法性校验。
校验完成后会生成数据绑定结果 BindingResult 对象,Spring MVC 会将 BindingResult 对象中的内容赋给处理方法的相应参数。

 

5、AOP

基于XML

 

 

 基于注解

@Aspect
public class Logging {
   @Pointcut("execution(* com.tutorialspoint.*.*(..))")
   private void selectAll(){}
   @Before("selectAll()")
   public void beforeAdvice(){
      System.out.println("Going to setup student profile.");
   }
   @After("selectAll()")
   public void afterAdvice(){
      System.out.println("Student profile has been setup.");
   }
   @AfterReturning(pointcut = "selectAll()", returning="retVal")
   public void afterReturningAdvice(Object retVal){
      System.out.println("Returning:" + retVal.toString() );
   }
   @AfterThrowing(pointcut = "selectAll()", throwing = "ex")
   public void AfterThrowingAdvice(IllegalArgumentException ex){
      System.out.println("There has been an exception: " + ex.toString());   
   }  
}

 

 

部分参考自:http://wiki.jikexueyuan.com

转载于:https://www.cnblogs.com/1341969602-wwddz/p/11536424.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值