Spring笔记一

Spring笔记一

Spring的两个核心特性

  • 依赖注入(dependency injection,DI)

  • 面向切面编程(aspect-oriented programming,AOP)

为了降低Java开发的复杂性,Spring采取了一下四种关键策略:

  1. 基于POJO(Plain Ordinary Java Objects,实际就是普通javabeans,使用pojo名称是为了避免和ejb混淆起来)的轻量级和最小侵入性编程
  2. 通过依赖注入和面向接口实现松耦合
  3. 基于切面和惯例进行声明式变成
  4. 通过切面和模版减少样板式代码

    public class BravaKnight implements Knight{
    private Quest quest;
    public BraveKnight(Quest quest) {<----- Quest被注入进来
        this.quest=quest;
    }
    
    public void embarkOnQuest(){
        quest.embark();
     }      
    

上述方法是依赖注入的一种方式,即构造器注入(constructor injection).

BraveKnight没有与任何特定的Quest实现发生耦合,这是一种松耦合。
一个对象只通过接口(而不是具体实现或者初始化过程)来表明依赖关系,那么这种依赖就能够在对象本身毫不知情的情况下,用不同的具体实现进行替换

    import java.io.PrintStream;
    public class SlayDragonQuest implements Quest{
    private PrintStream stream;
    public SlayDragonQuest(PrintStream stream){
    this.stream=stream;
    }

    public void embark(){
    stram.println("slaydragonquest");

将SlayDragonQuest交给BraveKnight,将PrintStream交给SlayDragonQuest
创建应用组件之间协作的行为称为装配(wiring)

  • xml配置方式

    
    
    
    
    
    
    
    
    
    
    
    
  • java的配置方式

    @Configuration
    public class KnightConfig{
    
    @Bean
    public Knight knight(){
    return new BraveKnight(quest());
    }
    
    @Bean 
    public Quest quest(){
        return new SlayDragonQuest(System.out);
    }
    

你可能感兴趣的:(spring)