
Spring
Spring
程序员·小李
不知道要干什么的时候,停一停,想一想;知道想要什么的时候,努努力,拼一拼。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
依赖与解耦
依赖实际上是大面积存在的,一个Java类是无法完成太多的工作的,所以需要依赖其他的Class来实现目的。例如,business层会依赖data层获取数据,那么dataService就是bizService的依赖。public class BusinessServiceImpl { public long calculateSum(User user) { DataServiceImpl dataService = new DataServiceImpl();原创 2021-11-27 11:19:04 · 469 阅读 · 0 评论 -
Bean与依赖注入
怎么注册Bean组件呢?开启注解扫描后,凡是使用以下三种注解标记的类会自动扫描到Spring容器中:@Component@Service@Servicepublic class BusinessServiceImpl implements BusinessService {}@Repository@Repositorypublic class DataServiceImpl implements DataService {}@Service常用于业务逻辑相..原创 2021-11-27 22:20:21 · 548 阅读 · 0 评论 -
Spring 框架:Bean构造后、销毁前的介入
在Spring框架下,我们怎么介入呢?原创 2021-04-11 13:36:32 · 339 阅读 · 0 评论 -
Spring 框架:在Spring场景下使用工厂模式
目录1. 设计接口2. 设计实现类方式一:自定义工厂类方式二:通过AbstractFactoryBean实现工厂模式为我们提供选择动态实现类的灵活性,那么,在Spring框架内,怎么实现工厂模式呢?1. 设计接口public interface Courier { public String deliver(String items, String address); }2. 设计实现类package com.sdp.compone...原创 2021-04-11 22:05:40 · 627 阅读 · 0 评论 -
Spring 框架:上手配置一个Bean
1. 准备一个纯净的POJO这里的Employee类没有什么特殊的地方,我们只定义了一个字段,namepackage com.test; public class Employee { private String name; public String getName() { return name; } public void setName(String name) { this.name = name;原创 2021-04-11 12:54:32 · 132 阅读 · 0 评论 -
xml配置Bean的最佳实践
1. 基本结构<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://ww原创 2021-06-06 23:20:56 · 259 阅读 · 0 评论 -
Spring 框架:Spring怎么管理依赖的?
目录1. 设计一个接口2. 设计几个实现类3. 使用实现类4. 设计一个小Spring来管理Bean5. 测试一下我们大概知道了,怎么向Spring注册Bean(配置Bean),怎么向Spring要Bean(注入Bean)。那到底是怎么实现的呢?我们前面提到,Spring可以通过xml配置文件、注解、Java配置类获取到Bean的注册。这些途径,都是通过一定的方式告诉Spring:你在xxx位置可以找到一个Bean!1. 设计一个接口public inter..原创 2021-04-11 13:58:37 · 280 阅读 · 0 评论 -
Bean的使用
1. 使用Setter方式注入将被依赖的类型,声明成一个成员变量提供一个set方法,并对其方法使用@Autowired注解当然,对于setter方式,我们可以简化为:public class BusinessServiceImpl { @Autowired private DataService dataService; }☆☆☆☆☆ 直接在成员变量上使用@Autowired注解,省略掉setter方法。2. 使用构造器注入..原创 2021-11-27 23:02:49 · 336 阅读 · 0 评论 -
Spring容器创建
常见的容器创建有两种:基于配置类、基于xml配置文件。基于配置类我们使用@Configuration注解表示这是Spring上下文的配置类,使用@ComponentScan注解表示开启注解扫描,并指定扫描范围。@Configuration@ComponentScan(basePackages = { "com.xxx.yyy" })class SpringContext {}一般指定com.xxx.yyy为Bean所在的最上层包,这样所有的Bean都可以扫描到。使用Ap..原创 2021-11-27 22:45:47 · 608 阅读 · 0 评论 -
Autowired的一点延伸
当使用Autowired进行依赖注入的时候,采用的是类型注入。我们往往采用接口解耦的方式实现,例如定义DataService接口public interface DataService{}然后在使用的时候,使用接口定义成员变量@Servicepublic class BusinessServiceImpl inplements BusinessService{ @Autowired private DataService dataServic...原创 2021-11-27 23:25:46 · 239 阅读 · 0 评论 -
Spring 框架:几种注入Bean的方式
目录1. 构造方法注入2. Set方法注入3. 成员变量注入(官方不推荐,但是可用、常用)1. 构造方法注入在构造方法上添加@Autowired注解,可以实现构造方法入参的注入。package com.stackoverflow.documentation;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;原创 2021-04-11 13:27:53 · 282 阅读 · 0 评论 -
Aop 最佳实践
1. 代理方式JDK用于基于interface的aopCGLIB用于基于类的aop2.原创 2021-06-11 21:27:03 · 480 阅读 · 0 评论 -
Spring 框架:泛型接口的自动注入
目录1. 设计泛型接口2. 设计实现类3. 注入使用。对于泛型接口的实现类的注入,Spring会自动帮我们识别我们需要的是哪个实现类。1. 设计泛型接口public interface GenericValidator<T> { public T validate(T object);}2. 设计实现类@Componentpublic class FooValidator implements GenericValidato...原创 2021-04-11 23:17:39 · 2507 阅读 · 0 评论 -
Bean的生命周期
Instantiate:Spring开始初始化BeanPopulate properties: 值注入,依赖注入BeanNameAware:如果实现了BeanNameAware接口,将会调用setBeanName方法。(实现BeanNameAware接口的Bean可以获取到自己叫什么名字)BeanFactoryAware:如果实现了BeanFactoryAware接口,会调用setBeanFactory()方法,Bean内部可以获取到Spring的Bean工厂。(实现BeanFac...原创 2021-12-17 22:36:03 · 694 阅读 · 0 评论 -
Spring Bean配置的最佳实践
1. 三种定义方式的选择xml,java配置类,注解扫描三种定义方式优选注解扫描、最次也是java配置类,xml逐步放弃。原创 2021-06-06 22:55:25 · 335 阅读 · 0 评论 -
Spring 框架:几种声明Bean的方式
目录1. xml声明2. Java配置类3. 注解1. xml声明通过xml文件将POJO配置成一个Bean,然后通过XmlApplicationContext读取配置。package com.test; public class Employee { private String name; public String getName() { return name; } public void setNa原创 2021-04-11 13:18:55 · 515 阅读 · 0 评论 -
Bean的可用范围
我们可以通过@Scope注解指定Bean的可用范围@Service@Scope("singleton")public class BusinessServiceImpl implements BusinessService {}默认的可用范围是Singleton,也就是常说的单例。范围 含义 Singleton 一个容器只会存在一个实例 Prototype 每次注入都是新的实例 request 针对每一个HTTP请求,创建一个实例 se..原创 2021-11-27 23:10:08 · 441 阅读 · 0 评论 -
Spring 框架:注入指定接口的全部实现类的Bean
目录1. 设计接口2. 设计实现类3. 获取接口的所有实现类在日常的开发过程中,可能会遇到使用接口解耦的场景,这个时候可能会用到所有的实现类的注入。1. 设计接口public interface Courier { public String deliver(String items, String address); }2. 设计实现类这里我们通过注解的方式,将接口的实现类注册到Beanpackage com.sdp.compon...原创 2021-04-11 21:37:51 · 1663 阅读 · 0 评论 -
Spring 框架:常用的SpEL表达式
目录1. 字面量2. 列表3. 键值对4. 方法调用我们可以使用@Value动态注入值,例如@Value("#{3}")private Integer age;复杂一点的,这里就可能涉及到表达式了。1. 字面量支持字符串、日期、数字、布尔、null"#{'Hello World'}" //strings"#{3.1415926}" //numeric values (double)"#{true}" //boolean"#{null}" //n..原创 2021-04-11 14:08:53 · 479 阅读 · 0 评论 -
Spring 框架:多实现时的准确注入
目录1. 设计接口2. 设计实现类3. 注入在接口存在多实现的情况下,如何准确注入呢?1. 设计接口public interface FooValidator { public Foo validate(Foo foo);}2. 设计实现类这里通过@Component注入,value值是Bean的名称@Component(value="FooNameValidator")public class FooNameValidator i...原创 2021-04-11 22:35:39 · 205 阅读 · 0 评论 -
Spring 框架:Prototype注入到Singleton
目录方式一:手动配置方式二:Provider在实际的开发中,并不总是使用Singleton的Bean,当需要将Prototype的Bean注入到Singleton时,有两种方式。方式一:手动配置1. 设计Prototype类这里就是那个我们每次请求都想新创建对象的Beanpublic class Window { }2. 设计抽象类,提供Prototype类的生产的抽象方法抽象类,一个public方法用来调用抽象方法创建对象。具体的创建对象...原创 2021-04-12 23:33:49 · 371 阅读 · 0 评论