什么是 bean 装配
在Java中,bean装配是一种将对象(也称为bean)与其他对象之间建立关联关系的方法。这种装配可以通过手动编写代码来实现,也可以使用依赖注入框架(如Spring)来自动完成。
在bean装配中,有三种主要的方式:构造函数注入、setter方法注入和自动装配。
- 构造函数注入:通过在构造函数中传入依赖对象来建立关联关系。代码示例:
public class BeanA {
private BeanB beanB;
public BeanA(BeanB beanB) {
this.beanB = beanB;
}
}
public class BeanB {
// ...
}
// 装配代码
BeanB beanB = new BeanB();
BeanA beanA = new BeanA(beanB);
- setter方法注入:通过调用bean的setter方法来设置依赖对象。代码示例:
public class BeanA {
private BeanB beanB;
public void setBeanB(BeanB beanB) {
this.beanB = beanB;
}
}
public class BeanB {
// ...
}
// 装配代码
BeanB beanB = new BeanB();
BeanA beanA = new BeanA();
beanA.setBeanB(beanB);
- 自动装配:使用依赖注入框架来自动建立关联关系。代码示例:
public class BeanA {
private BeanB beanB;
public void setBeanB(BeanB beanB) {
this.beanB = beanB;
}
}
public class BeanB {
// ...
}
// 在Spring配置文件中声明bean
<bean id="beanA" class="com.example.BeanA" autowire="byName"/>
<bean id="beanB" class="com.example.BeanB"/>
// 装配由Spring自动完成
BeanA beanA = applicationContext.getBean("beanA", BeanA.class);
解释不同方式的自动装配
-
默认的自动装配(default autowiring):Spring会根据属性名称和bean的名称来自动装配。如果一个bean的属性名称与另一个bean的名称相匹配,那么Spring会自动将这个bean注入到属性中。
-
根据类型自动装配(by type autowiring):Spring会根据属性类型来自动装配。如果一个bean的属性类型与另一个bean的类型匹配,那么Spring会自动将这个bean注入到属性中。如果有多个bean的类型匹配,Spring会抛出异常。
-
根据构造函数自动装配(by constructor autowiring):Spring会根据构造函数的参数类型来自动装配。如果一个bean的构造函数的参数类型与另一个bean的类型匹配,那么Spring会自动将这个bean注入到构造函数中。如果有多个bean的类型匹配,Spring会抛出异常。
可以通过在bean的定义中使用@Autowired
注解来实现自动装配。例如,在默认的自动装配中,可以使用@Autowired
注解在属性上进行标记,让Spring自动注入该属性。在根据类型自动装配和根据构造函数自动装配中,可以使用@Autowired
注解在构造函数参数上进行标记,让Spring自动注入该参数。
另外,可以使用@Qualifier
注解指定特定的bean进行注入,以解决多个bean类型匹配的问题。还可以使用@Primary
注解指定一个首选的bean进行注入。
可以在 Spring 中注入一个 null 和一个空字符串
在Spring中,可以注入一个null和一个空字符串。
要注入null,可以使用@Autowired(required=false)
注解。这将告诉Spring不要求该依赖项必须存在,即允许注入null。例如:
@Autowired(required=false)
private SomeBean someBean;
要注入一个空字符串,可以使用@Value
注解,并将空字符串作为属性值。例如:
@Value("")
private String emptyString;
这样,Spring将会将一个空字符串注入到该属性中。
需要注意的是,如果使用@Value
注解注入一个空字符串时,该属性必须是一个字符串类型。如果属性是一个对象类型,则无法注入一个空字符串,而只能注入null。
总结
-
XML配置文件装配:使用XML配置文件来定义Bean的装配方式。我们使用<bean>元素来定义一个Bean,指定其类名、属性、构造函数参数等信息。
-
注解装配:使用注解来标记Bean的装配方式。Spring提供了多种注解,包括@Component、@Service、@Repository、@Controller等,我们可以根据实际需要选择合适的注解进行装配。
-
Java配置类装配:使用Java配置类来定义Bean的装配方式。我们可以创建一个Java类,使用@Configuration注解标记为配置类,然后使用@Bean注解来定义Bean的创建方式和依赖关系。
-
自动装配:Spring容器可以根据Bean之间的依赖关系自动进行装配。我们可以使用@Autowired注解来标记需要自动装配的属性或构造函数参数,Spring容器会自动查找合适的Bean进行装配。
-
基于接口的装配:Spring容器可以使用接口来装配Bean对象。我们可以使用@Autowired注解和接口类型来声明需要装配的Bean对象,Spring容器会自动查找实现了该接口的Bean进行装配。
-
条件装配:Spring容器可以根据条件来进行装配。我们可以使用@Conditional注解来定义一个条件,只有满足该条件时才会装配对应的Bean。
-
延迟装配:Spring容器可以延迟装配Bean对象,即只有在需要使用Bean时才进行实例化和装配。我们可以使用@Lazy注解来标记一个Bean需要延迟装配。
标签:装配,10,beanB,Spring,sping,Bean,bean,注解 From: https://blog.csdn.net/Flying_Fish_roe/article/details/140065249