JavaEE Spring基于注解的IOC

描述

使用基于注解配置的 Spring IOC,设置对象的范围及生命周期。

题目

搭建 Spring 的开发环境,使用基于注解配置的 Spring IOC,设置对象的范围及生命周期。

题目解决思路

  1. 创建 Maven 项目
  2. pom.xml 导入相关依赖。
  3. 编写 Spring 核心配置文件。
  4. 使用注解 @Scope 设置对象范围。
  5. 使用注解 @PostConstruct 修饰初始化方法。
  6. 使用注解 @PreDestroy 销毁方法。
  7. 使用注解 @Lazy 延迟初始化。

项目结构

27_JavaEE Spring.png

前期准备

pom 文件:

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>net.haicoder</groupId> <artifactId>SpringDemo08</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <!--IOC--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.1.7.RELEASE</version> </dependency> </dependencies> </project>

代码具体实现

核心配置文件:

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> <!--自动扫描包--> <context:component-scan base-package="net.haicoder"/> </beans>

实体类:

@Component @Scope("singleton") @Lazy public class User { private Integer id; private String name; public User() { System.out.println("构造方法创建对象"); } // 初始化方法 @PostConstruct public void init(){ System.out.println("对象初始化"); } // 销毁方法 @PreDestroy public void preDestroy(){ System.out.println("对象销毁"); } }

测试类:

public class DemoTest { public static void main(String[] args) { System.out.println("嗨客网(www.haicoder.net)\n"); ClassPathXmlApplicationContext cxt = new ClassPathXmlApplicationContext("applicationContext.xml"); User user = (User) cxt.getBean("user"); System.out.println("对象:" + user); // 关闭IOC容器 cxt.close(); } }

运行结果如下:

28_JavaEE Spring.png

以上案例使用基于注解配置的 Spring IOC,设置对象的范围及生命周期。