当前位置:实例文章 » HTML/CSS实例» [文章]spring学习笔记二

spring学习笔记二

发布人:shili8 发布时间:2025-02-28 20:05 阅读次数:0

**Spring 学习笔记二**

在前面的笔记中,我们已经了解了 Spring 的基本概念、IOC 容器的使用以及 AOP 的应用。今天我们将继续深入探讨 Spring 的其他重要特性,包括 Bean 的生命周期、Bean 的作用域、Spring 的配置文件和注解等。

###1. Bean 的生命周期在 Spring 中,Bean 是一个 Java 对象,它可以被 IOC 容器管理。Bean 的生命周期是指从创建到销毁的整个过程。在这个过程中,Bean 可以经历以下几个阶段:

* **实例化**:IOC 容器根据 Bean 的定义(如 XML 配置文件或注解)创建一个新的 Bean 实例。
* **依赖注入**:IOC 容器将 Bean 的依赖注入到 Bean 中。
* **初始化**:Bean 在使用之前需要进行一些初始化操作,这些操作可以通过实现 InitializingBean 接口或定义 init-method 方法来完成。
* **使用**:Bean 可以被应用程序使用了。
* **销毁**:当 Bean 不再被使用时,IOC 容器会将其销毁。

下面是一个示例代码:

java// 定义一个简单的Bean类public class User {
 private String name;
 private int age;

 public User() {}

 public void setName(String name) {
 this.name = name;
 }

 public void setAge(int age) {
 this.age = age;
 }
}

// 使用Spring容器实例化UserBeanpublic class Main {
 @Autowired private User user;

 public static void main(String[] args) {
 ApplicationContext context = new AnnotationConfigApplicationContext(Main.class);
 Main main = (Main) context.getBean("main");
 System.out.println(main.user.getName());
 }
}


在这个示例中,我们定义了一个简单的 Bean 类 `User`,它有两个属性 `name` 和 `age`。我们使用 Spring 容器实例化 `UserBean`,并将其注入到 `Main` 类中。

###2. Bean 的作用域Spring 中 Bean 的作用域决定了 IOC 容器在多个请求之间如何共享和管理 Bean 实例。在 Spring 中,Bean 的作用域有以下几种:

* **singleton**:这是默认的作用域,每次请求都会返回同一个 Bean 实例。
* **prototype**:每次请求都会创建一个新的 Bean 实例,不会共享任何实例。
* **request**:每次 HTTP 请求都会创建一个新的 Bean 实例,请求结束后会销毁该实例。
* **session**:每次 HTTP 会话都会创建一个新的 Bean 实例,会话结束后会销毁该实例。

下面是一个示例代码:

java// 定义一个简单的Bean类public class User {
 private String name;
 private int age;

 public User() {}

 public void setName(String name) {
 this.name = name;
 }

 public void setAge(int age) {
 this.age = age;
 }
}

// 使用Spring容器实例化UserBean@Configurationpublic class MainConfig {
 @Bean @Scope("prototype")
 public User user() {
 return new User();
 }
}

// 使用Spring容器获取UserBeanpublic class Main {
 @Autowired private User user;

 public static void main(String[] args) {
 ApplicationContext context = new AnnotationConfigApplicationContext(MainConfig.class);
 Main main = (Main) context.getBean("main");
 System.out.println(main.user.getName());
 }
}


在这个示例中,我们定义了一个简单的 Bean 类 `User`,它有两个属性 `name` 和 `age`。我们使用 Spring 容器实例化 `UserBean`,并将其注入到 `Main` 类中。

###3. Spring 的配置文件Spring 提供了多种配置文件格式,如 XML、Properties 等。在这些配置文件中,我们可以定义 Bean 的属性和依赖关系等。

下面是一个示例代码:

xml<!-- 定义一个简单的Bean类 -->
<bean id="user" class="com.example.User">
 <property name="name" value="John"/>
 <property name="age" value="30"/>
</bean>

<!-- 使用Spring容器实例化UserBean -->
<bean id="main" class="com.example.Main">
 <property name="user" ref="user"/>
</bean>


在这个示例中,我们定义了一个简单的 Bean 类 `User`,它有两个属性 `name` 和 `age`。我们使用 Spring 容器实例化 `UserBean`,并将其注入到 `Main` 类中。

###4. Spring 的注解Spring 提供了多种注解,如 @Autowired、@Value 等。在这些注解中,我们可以定义 Bean 的属性和依赖关系等。

下面是一个示例代码:

java// 定义一个简单的Bean类public class User {
 private String name;
 private int age;

 public User() {}

 public void setName(String name) {
 this.name = name;
 }

 public void setAge(int age) {
 this.age = age;
 }
}

// 使用Spring容器实例化UserBean@Configurationpublic class MainConfig {
 @Bean public User user() {
 return new User();
 }
}

// 使用Spring容器获取UserBeanpublic class Main {
 @Autowired private User user;

 public static void main(String[] args) {
 ApplicationContext context = new AnnotationConfigApplicationContext(MainConfig.class);
 Main main = (Main) context.getBean("main");
 System.out.println(main.user.getName());
 }
}


在这个示例中,我们定义了一个简单的 Bean 类 `User`,它有两个属性 `name` 和 `age`。我们使用 Spring 容器实例化 `UserBean`,并将其注入到 `Main` 类中。

###5. 总结在本文中,我们学习了 Spring 的 Bean 生命周期、Bean 作用域、Spring 配置文件和注解等重要特性。在这些特性中,我们可以定义 Bean 的属性和依赖关系等。我们还学习了如何使用 Spring 容器实例化 Bean 和将其注入到其他类中。

###6. 参考* [Spring 官方文档]( />* [Spring Boot 官方文档]( />* [Spring Cloud 官方文档]( />
###7. 附录以下是本文中使用的示例代码:

java// 定义一个简单的Bean类public class User {
 private String name;
 private int age;

 public User() {}

 public void setName(String name) {
 this.name = name;
 }

 public void setAge(int age) {
 this.age = age;
 }
}

// 使用Spring容器实例化UserBean@Configurationpublic class MainConfig {
 @Bean public User user() {
 return new User();
 }
}

// 使用Spring容器获取UserBeanpublic class Main {
 @Autowired private User user;

 public static void main(String[] args) {
 ApplicationContext context = new AnnotationConfigApplicationContext(MainConfig.class);
 Main main = (Main) context.getBean("main");
 System.out.println(main.user.getName());
 }
}


xml<!-- 定义一个简单的Bean类 -->
<bean id="user" class="com.example.User">
 <property name="name" value="John"/>
 <property name="age" value="30"/>
</bean>

<!-- 使用Spring容器实例化UserBean -->
<bean id="main" class="com.example.Main">
 <property name="user" ref="user"/>
</bean>


java// 定义一个简单的Bean类public class User {
 private String name;
 private int age;

 public User() {}

 public void setName(String name) {
 this.name = name;
 }

 public void setAge(int age) {
 this.age = age;
 }
}

// 使用Spring容器实例化UserBean@Configurationpublic class MainConfig {
 @Bean @Scope("prototype")
 public User user() {
 return new User();
 }
}

// 使用Spring容器获取UserBeanpublic class Main {
 @Autowired private User user;

 public static void main(String[] args) {
 ApplicationContext context = new AnnotationConfigApplicationContext(MainConfig.class);
 Main main = (Main) context.getBean("main");
 System.out.println(main.user.getName());
 }
}


java// 定义一个简单的Bean类public class User {
 private String name;
 private int age;

 public User() {}

 public void setName(String name) {
 this.name = name;
 }

 public void setAge(int age) {
 this.age = age;
 }
}

// 使用Spring容器实例化UserBean@Configurationpublic class MainConfig {
 @Bean

其他信息

其他资源

Top