spring入门
2021/6/5 18:24:24
本文主要是介绍spring入门,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Spring入门
目录- Spring入门
- 1、IOC容器
- 2、依赖注入DI
- 3、Bean 自动装配
- 4、Spring 注解配置
- 5、AOP面向切面编程
1、IOC容器
-
什么是IOC?形象的了解spring-ioc 移步知乎
-
Spring 提供了以下两种不同类型的容器
- Spring BeanFactory 容器
- Spring ApplicationContext 容器
这两个容器有什么区别?
ApplicationContext 容器包括 BeanFactory 容器的所有功能,所以通常不建议使用BeanFactory。BeanFactory 仍然可以用于轻量级的应用程序,如移动设备或基于 applet 的应用程序,其中它的数据量和速度是显著。
-
Bean
-
什么是bean
被称作 bean 的对象是构成应用程序的支柱也是由 Spring IoC 容器管理的。
-
如何创建bean
-
xml
- java class
- 注解
-
2、依赖注入DI
-
基于构造函数的注入
当容器调用带有一组参数的类构造函数时,基于构造函数的 DI 就完成了,其中每个参数代表一个对其他类的依赖。
-
基于设值函数的注入
当容器调用一个无参的构造函数或一个无参的静态 factory 方法来初始化你的 bean 后,通过容器在你的 bean 上调用设值函数,基于设值函数的 DI 就完成了。
-
注入内部Bean
或 元素中的 元素称为内部bean -
注入集合
3、Bean 自动装配
- byName
- byType
- constructor
- autodetect
名称 | 说明 |
---|---|
byName | 根据 Property 的 name 自动装配,如果一个 Bean 的 name 和另一个 Bean 中的 Property 的 name 相同,则自动装配这个 Bean 到 Property 中。 |
byType | 根据 Property 的数据类型(Type)自动装配,如果一个 Bean 的数据类型兼容另一个 Bean 中 Property 的数据类型,则自动装配。 |
constructor | 根据构造方法的参数的数据类型,进行 byType 模式的自动装配。 |
autodetect | 如果发现默认的构造方法,则用 constructor 模式,否则用 byType 模式。 |
no | 默认情况下,不使用自动装配,Bean 依赖必须通过 ref 元素定义。 |
4、Spring 注解配置
-
@Required
public class Student { private String name; private Integer age; public String getName() { return name; } @Required public void setName(String name) { this.name = name; } public Integer getAge() { return age; } @Required public void setAge(Integer age) { this.age = age; } }
<bean id="student" class="com.example.w3cschool.pojo.Student"> <property name="name" value="mh"/> <property name="age" value="11"/> </bean>
-
@Autowired
可能会有这样一种情况,当你创建多个具有相同类型的 bean 时,并且想要用一个属性只为它们其中的一个进行装配,在这种情况下,你可以使用 @Qualifier 注释和 @Autowired 注释通过指定哪一个真正的 bean 将会被装配来消除混
- @ComponentScan扫描器
- @Configuration表明该类是配置类
- @Component 指定把一个对象加入IOC容器--->@Name也可以实现相同的效果【一般少用】
- @Repository 作用同@Component; 在持久层dao使用
- @Service 作用同@Component; 在业务逻辑层service使用
- @Controller 作用同@Component; 在控制层controller使用
- @Resource 依赖关系
- 如果@Resource不指定值,那么就根据类型来找,相同的类型在IOC容器中不能有两个
- 如果@Resource指定了值,那么就根据名字来找
5、AOP面向切面编程
https://www.cnblogs.com/hongwz/p/5764917.html
目前最流行的 AOP 框架有两个,分别为 Spring AOP 和 AspectJ。
AOP 的相关术语
名称 | 说明 |
---|---|
Joinpoint(连接点) | 指那些被拦截到的点,在 Spring 中,可以被动态代理拦截目标类的方法。 |
Pointcut(切入点) | 指要对哪些 Joinpoint 进行拦截,即被拦截的连接点。 |
Advice(通知) | 指拦截到 Joinpoint 之后要做的事情,即对切入点增强的内容。 |
Target(目标) | 指代理的目标对象。 |
Weaving(植入) | 指把增强代码应用到目标上,生成代理对象的过程。 |
Proxy(代理) | 指生成的代理对象。 |
Aspect(切面) | 切入点和通知的结合。 |
详细学习AOP之前先了解一下静态代理、动态代理
- 静态代理:功能接口---接口实现类(厂家)---代理类(功能增强)---用户
- 动态代理:在程序执行过程中,使用jdk的反射机制,创建代理类对象,并动态的指定要代理目标类。
- (实现方式:JDK代理、CGLIB代理)
记得依赖注入
<!--AOP需要--> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.4</version> </dependency>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
注意几点:
-
aop:advisor,是有顺序的,必须放在aop:pointcut之后 spring aop的两种写法aspect和advisor https://www.cnblogs.com/flying607/p/7833700.html
Spring 通过XML配置文件以及通过注解形式来AOP 来实现前置,环绕,异常通知,返回后通知,后通知
这篇关于spring入门的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28AI给的和自己写的Python代码,都无法改变输入框的内容,替换也不行
- 2024-09-27Sentinel配置限流资料:新手入门教程
- 2024-09-27Sentinel配置限流资料详解
- 2024-09-27Sentinel限流资料:新手入门教程
- 2024-09-26Sentinel限流资料入门详解
- 2024-09-26Springboot框架资料:初学者入门教程
- 2024-09-26Springboot框架资料详解:新手入门教程
- 2024-09-26Springboot企业级开发资料:新手入门指南
- 2024-09-26SpringBoot企业级开发资料新手指南
- 2024-09-26Springboot微服务资料入门教程