Spring架构 | 青训营笔记

92 阅读2分钟

之前阅读了一篇讲解Spring架构的文章,《浅入浅出Spring架构设计》,下面来进行总结。

主要讲述了IOC容器、Bean和AOP。Spring和Spring Boot并不是一个东西,Spring Boot包含了Spring的思想,Spring Boot简化了Spring的开发和部署。

IoC容器

也被称为依赖注入,对象可以通过构造函数、工厂方法,或者对象的属性来设置依赖。

Bean

在Spring中,由Spring IOC容器进行实例化—>组装管理—>构成程序骨架的对象称为Bean。Bean就是应用程序中众多对象之一。

以上三点串起来就是:Spring内部是一个放置Bean的IoC容器,通过依赖注入的方式处理Bean之间的依赖关系。

AOP

AOP的全称是面向切面编程,是对面向对象编程的补充(OOP)。在处理日志、安全管理、事务管理等方面有非常重要的作用。

注解

@Component

@Component注解后就表示这是一个Bean,可以被IoC容器所管理,需要注入依赖。

@Autowired

使用@Autowired注解表示IOC自动完成装载。

代码示例

// 告诉Spring从哪个包下扫描Bean,不写就是当前包路径@ComponentScan(basePackages = "com.my.spring.test.demo")
public class Main {	
    public static void main(String[] args) {		
        // 将Main(配置信息)传入到ApplicationContext(IoC容器)中
        ApplicationContext context = new AnnotationConfigApplicationContext(Main.class);		
// 从(IoC容器)中获取到我们的boy		
        Boy boy = (Boy) context.getBean("boy");		// 开车		boy.driver();	
    }
}

其他的详尽内容请看原文《浅入浅出Spring架构设计》

Spring分层

MVC设计模式:将程序按照不同的业务功能分成不同的层,多层组件构建起来项目的整体,能做到明确分工且模块之间的低耦合度。

讲Web应用程序分为3层:Controller层、Service层、DAO层,这三层之间的关系是:Controller层调用Service层,Service层调用DAO层,并且Service层和DAO层设计为接口。

他们之间如何通过IoC容器注入依赖呢?

Controller

//@Component
@Controller
Public class Controller {
    @Autowired
    private Service serviceitem;
    
    public 方法 {...};
}

Controller是Component的子类,所以也可以这样注解

其他层级的调用也是一样的,要增加两个注解@ServiceRepository分别表示业务层和数据接口层,和@Component并没有差别。

还有就是IOC容器自动装载默认是byType的,如果要byName,可以用注解@Qualifier

每个注解后面都可以进行赋值,比如@Service("myStudentSerivce"),然后@Qualifier也要加上赋值,保持一致性。