Spring学习之Bean管理

本文详细介绍了Spring框架中Bean的管理,包括基于XML的Bean创建和属性注入。内容涵盖通过set方法和构造器注入属性,使用p名称空间简化配置,以及如何注入外部和内部Bean。同时,文章还讨论了级联赋值的不同方式和数组、集合类型的属性注入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Bean管理: 两个操作 (1)创建对象 (2)注入属性 (属性可以是多种数据类型)

Bean管理实现方式

(1)基于xml配置的文件方式实现 (2)基于注解方式实现

基于xml方式

1.基于xml方式创建对象

<bean id="user" class="com.hex.spring5.User"></bean>

(1)在spring配置文件中 使用bean标签,标签里面添加对应属性,就可以实现对象创建(2) 在<bean>标签中有很多属性:

id : 相当于给对象创建一个别名/标识 , 供识别 , 不一定要和类名一样

class : 需要创建的对象所在类的全路径 (全路径classPath : 简单来说就是src目录下面的包名加类名)

name : 作用和id差不多 ,一个古早的属性 里面可以添加特殊符号

(3)创建对象的时候,默认也是执行无参构造器 如果无参构造被覆盖那么执行方法时会报错Class.newInstance只能调用无参构造器

2.基于xml方式注入属性

(1)DI : 依赖注入 ,就是注入属性

依赖注入是IOC的一种实现,就是注入属性,必须在创建对象的基础上进行

第一种注入方式 : 使用set方法进行注入

(1)创建类,定义属性和对应的 set 方法

public class Book {
 //创建属性
 private String bname;
 private String bauthor;
 //创建属性对应的 set 方法
 public void setBname(String bname) {
 this.bname = bname;
 }
 public void setBauthor(String bauthor) {
 this.bauthor = bauthor;
 }
}

(2)在 spring 配置文件配置对象创建,配置属性注入

<bean id="book" class="com.hex.spring5.Book">
    <!--使用property完成属性注入 
    name:属性名 
    value 属性值-->
    <property name="bName" value="金瓶梅"></property>
    <property name="bauthor" value="兰陵笑笑生"></property>
</bean>
​
​

第二种注入方式 : 通过有参构造注入

(1)创建类,定义属性,创建属性对应有参数构造方法

   public class Orders {
    //属性
    private String oname;
    private String address;
    //有参数构造
    public Orders(String oname,String address) {
    this.oname = oname;
    this.address = address;
    }

(2)在 spring 配置文件中进行配置

<!--3 有参数构造注入属性--> <bean id="orders" class="com.atguigu.spring5.Orders">
<constructor-arg name="oname" value="电脑"></constructor-arg>
<constructor-arg name="address" value="China"></constructor-arg>
</bean>

Spring框架中的Bean管理Spring的核心功能之一,它通过控制反转(IoC)和依赖注入(DI)来实现对象的创建、配置和管理。以下是Spring Bean管理的一些关键点: 1. **控制反转(IoC)**: - IoC是一种设计原则,它将对象的创建、配置和管理交给容器,而不是由应用程序本身来控制。这使得代码更加松耦合,易于测试和维护。 2. **依赖注入(DI)**: - DI是IoC的一种实现方式,它通过构造函数、Setter方法或字段注入的方式将依赖对象注入到Bean中。Spring容器负责创建Bean并注入它们之间的依赖关系。 3. **Bean的配置方式**: - **XML配置**:通过XML文件定义Bean及其依赖关系。 - **注解配置**:使用注解(如`@Component`、`@Service`、`@Repository`、`@Autowired`等)来定义和管理Bean。 - **Java配置**:使用`@Configuration`和`@Bean`注解在Java类中定义Bean。 4. **Bean的作用域**: - **Singleton**:单例模式,整个应用程序中只有一个实例(默认)。 - **Prototype**:原型模式,每次请求都会创建一个新的实例。 - **Request**:每个HTTP请求创建一个实例。 - **Session**:每个HTTP会话创建一个实例。 - **Global Session**:在全局HTTP会话中创建一个实例。 5. **Bean的生命周期**: - Spring容器管理Bean的生命周期,包括Bean的创建、初始化、使用和销毁。可以通过实现`InitializingBean`和`DisposableBean`接口或使用`@PostConstruct`和`@PreDestroy`注解来定义初始化和销毁方法。 6. **自动装配**: - Spring可以通过`@Autowired`注解自动装配Bean之间的依赖关系。自动装配有多种模式,如`byType`、`byName`、`constructor`和`no`。 以下是一个简单的示例,展示了如何使用注解来配置Spring Bean: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class MyService { private final MyRepository myRepository; @Autowired public MyService(MyRepository myRepository) { this.myRepository = myRepository; } public void performService() { myRepository.performRepositoryWork(); } } @Component public class MyRepository { public void performRepositoryWork() { System.out.println("Repository work performed"); } } ``` 在这个示例中,`MyService`和`MyRepository`类都被标注为`@Component`,表示它们是Spring管理Bean。`MyService`通过构造函数注入`MyRepository`的依赖。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值