Spring学习笔记

发布时间 2023-05-25 10:04:39作者: coooooookie

1、基本概念

Spring:

  • 开源的轻量级的java开发框架,目的是提高开发人员的开发效率以及系统的可维护性。
  • 核心功能是支持IOC(控制反转)和AOP(面向切面编程)
  • 可以很方便地对数据库进行访问、可以很方便地集成第三方组件(电子邮件,任务,调度,缓存等等)、对单元测试支持比较好、支持 RESTful Java 应用程序的开发。
  • 是很多模块的集合:包括core-container(spring-core、spring-beans)、AOP(spring-aop、spring-aspects)、data access(spring-jdbc、spring-orm)、spring web(spring-web、spring-mvc、spring-websocket)、messaging、spring test

 2、IOC

  • 思想:IoC 的思想就是将原本在程序中手动创建对象的控制权,交由 Spring 框架来管理。
  • 具体实现:将对象之间的相互依赖关系交给 IoC 容器来管理,并由 IoC 容器完成对象的注入。使用xml或者注解将某类配置为bean,使用@autowired注解就可以实现依赖注入。

(1)IoC 容器:实际上就是个 Map(key,value),Map 中存放的是各种对象。

(2)bean:Bean 代指的就是那些被 IoC 容器所管理的对象。

(3)声明为bean的注解有

  • @Component:通用的注解,可标注任意类为 Spring 组件。如果一个 Bean 不知道属于哪个层,可以使用@Component 注解标注。
  • @Repository : 对应持久层即 Dao 层,主要用于数据库相关操作。
  • @Service : 对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao 层。
  • @Controller : 对应 Spring MVC 控制层,主要用于接受用户请求并调用 Service 层返回数据给前端页面。

(4)@Component和@bean的区别:

  • @Component 注解作用于类,而@Bean注解作用于方法。
  • @Component通常是通过类路径扫描来自动侦测以及自动装配到 Spring 容器中(我们可以使用 @ComponentScan 注解定义要扫描的路径从中找出标识了需要装配的类自动装配到 Spring 的 bean 容器中)。@Bean 注解通常是我们在标有该注解的方法中定义产生这个 bean,@Bean告诉了 Spring 这是某个类的实例,当我需要用它的时候还给我。
  • @Bean 注解比 @Component 注解的自定义性更强,而且很多地方我们只能通过 @Bean 注解来注册 bean。比如当我们引用第三方库中的类需要装配到 Spring容器时,则只能通过 @Bean来实现。