之前阅读了一篇讲解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的子类,所以也可以这样注解
其他层级的调用也是一样的,要增加两个注解@Service和Repository分别表示业务层和数据接口层,和@Component并没有差别。
还有就是IOC容器自动装载默认是byType的,如果要byName,可以用注解@Qualifier
每个注解后面都可以进行赋值,比如@Service("myStudentSerivce"),然后@Qualifier也要加上赋值,保持一致性。