1.Spring是什么?有什么特性?有哪些模块?常用注解?
1.1 Spring是什么?
一句话概况的话:Spring是一个轻量级,非入侵式的控制反转(IOC)和面向切面(AOP)的框架
1.2 有什么特性?
Spring特性:
1. AOP编程的支持
Spring提供了面向切面编程,可以方便的实现对程序进行权限拦截,允许监控,自定义注解等切面功能。
2. IOC和DI的支持
Spring的核心就是IOC和DI,IOC就是传统开发模式种需要自己不断的new对象现在不需要在进行创建,把创建对象的任务交给容器,程序只需要依赖注入(DI)就可以了
DI就是(依赖注入)容器在允许期间,动态的为应用程序提供运行时所依赖的资源,称之为依赖注入
3. 声明式事务的支持
支持通过配置就来完成对事务的管理,不需要通过硬编码的方式,以前重复的一些事物提交,回滚的JDBC代码,都可以不用自己写了
4. 快速集成功能
方便集成各种框架,内部对各种优秀框架的直接支持
1.3 Spring的七大模块:
1. Spring Core:Spring的核心,它是框架最基础的部分,提供了IOC和依赖注入DI特性
2. Spring Context:Spring上下文容器,它是BeanFactory功能加强的一个子接口
3. Spring Web:它提供Web应用开发的支持
4. Spring Mvc:它针对Web应用种MVC思想的实现
5. Spring Dao:提供对 JDBC 抽象层,简化了 JDBC 编码,同时,编码更具有健壮性
6. Spring ORM:它支持用于流行的 ORM 框架的整合,比如:Spring + Hibernate、Spring + iBatis、Spring + JDO 的整合等
7. Spring AOP:即面向切面编程,它提供了与 AOP 联盟兼容的编程实现
1.4 Spring中有哪些常用注解?
Web:
@Controller:@Controller标识的类,该类代表控制器类(控制层/表现层),这里控制层里面的每个方法,都可以去调用@Service标识的类(业务逻辑层),@Service标识的类中的方法可以继续调用@Resposity标识的接口实现类(Dao层/持久层)
@RestController:它结合了@Controller
和@ResponseBody
两个注解的功能,并提供了更简洁的方式来编写处理HTTP请求并返回响应的控制器。
@RequestMapping:用于映射Web请求,包括访问路径和参数。如果是Restful风格接口,还可以根据请求类型使用不同的注解:
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@ResponseBody:将Controller的方法返回的对象,通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。
@RequestBody:主要用来接收前端传递给后端的json字符串中的数据(请求体中的数据)
@PathVariable:用来赋予请求url中的动态参数,即:将请求URL中的模板变量映射到接口方法的参数上
容器:
@Component:作用是告诉Spring框架将被注解的类实例化为Bean,并将其纳入Spring容器的管理。通过这种方式,我们可以使用Spring的依赖注入(DI)机制来使用和管理这些组件。
@Service:标记当前类是一个service类,加上该注解会将当前类自动注入到spring容器中
@Repository:它用来标注访问层的类(Dao层),它表示一个仓库,主要用于封装对于数据库的访问。其实现方式与@Component注解相同
@Autowired:它默认按照类型进行注入,通过匹配对象类型来实现自动装配。如果存在多个匹配的bean,可以使用 @Qualifier
注解结合 @Autowired
来指定具体的bean名称进行注入。
@Qualifier:@Qualifier
注解用于解决同一类型多个bean的依赖注入问题,即当一个接口有多个实现类的时候,通过@Autowired
自动装配可能会出现不确定的情况,这时就需要配合@Qualifier
注解进行指定。
@Configuration:主要用于标注在类上当某个类标注了@Configuration注解时,表示这个类是Spring的一个配置类。
@Value:属于spring
的注解,在spring-beans
包下,可以在 字段 或 方法参数 或 构造函数参数 上使用,通常用于属性注入。支持SpEL
(Spring Expression Language)表达式来注入值,同时也支持属性占位符注入值。
@Bean:用于将对象存入spring的ioc容器中,同@controller、@Service、@Component、@Configuration、@Repository等几个注解是一样的,都是负责将对象存入容器当中。只不过方式不同,他们是用在类上面的,然后将当前类通过无参构造函数创建对象然后放入容器,而@Bean是用在方法上,将当前方法的返回值对象放到容器当中
@Scope:主要作用是调节Ioc容器中的作用域,在Spring IoC容器中主要有以下五种作用域:基本作用域:singleton(单例)、prototype(多例);Web 作用域(reqeust、session、globalsession),自定义作用域
AOP:
@Aspect:作用是把当前类标识为一个切面供容器读取
@After :final增强,不管是抛出异常或者正常退出都会执行
@Before:前置通知, 在方法执行之前执行
@Around:环绕增强,相当于MethodInterceptor
@PointCut:Pointcut是植入Advice的触发条件。每个Pointcut的定义包括2部分,一是表达式,二是方法签名。方法签名必须是 public及void型。可以将Pointcut中的方法看作是一个被Advice引用的助记符,因为表达式不直观,因此我们可以通过方法签名的方式为 此表达式命名。因此Pointcut中的方法只需要方法签名,而不需要在方法体内编写实际代码
事务:
@Transactional:可以作用于接口、接口方法、类以及类方法上,开启事务
2.SpringBoot
2.1 什么是SpringBoot
springboot属于spring的一个子项目,可以说是基于spring,主要是为了简化配置而诞生的一个解决方案框架,它可以利用引入starter而引入一组starter,从而简化了坐标的引入,同时简化配置使我们能更快速的专注单体程序(微服务)本身的开发
2.2 优点
快速开发:Spring Boot提供了自动化配置和约定大于配置的方式,可以快速方便地创建一个Spring应用程序。开发人员可以专注于业务逻辑开发,而无需关注底层的技术实现。
简化配置:Spring Boot自动化配置功能可以让开发人员不需要编写大量的XML配置文件。
极佳的兼容性:Spring Boot可以很好地兼容现有的Spring应用程序,而不需要进行重构。
微服务能力:Spring Boot提供了各种依赖库和组件,可以用于快速构建微服务应用程序。
智能化管理:Spring Boot应用程序提供了各种运维和监控功能,可以帮助开发人员更好地管理应用程序。
可扩展性强:Spring Boot是基于Spring基础之上,天然支持扩展和增强。
3.SpringMvc
3.1 什么是SpringMvc
MVC是模型(model),视图(View),控制器(controller)的简写,是一种软件设计规范
是将业务逻辑,数据,显示分离的方法来组织代码
MVC主要作用是降低了视图与业务逻辑间的双向耦合
MVC不是一种设计模式,MVC是一种架构模式,当然不同的MVC存在差异
3.2 SpringMvc优点
角色划分清晰:控制器(controller)、验证器(validator)、命令对象(command obect)、表单对象(form object)、模型对象(model object)、Servlet分发器(DispatcherServlet)、处理器映射(handler mapping)、试图解析器(view resoler)等等。每一个角色都可以由一个专门的对象来实现。
JSP表单标签库:在Spring2.0中引入的表单标签库,使用在JSP编写表单更加容易。
标签:容器,SpringBoot,SpringMvc,Spring,可以,注解,方法,注入 From: https://blog.csdn.net/2201_75950821/article/details/140717018