Spring框架在Bean中的管理(第十课)

简介: Spring框架在Bean中的管理(第十课)

         

Spring框架在Bean中的管理(第十课)案例实操 了解SpringIoc第一种注入的方式 这里从java基础开始说起

利用的技术有:Java的面向对象+SpringIoc第一种方式的注入+Maven项目依赖的构建 不需要写配置文件的方式。

第一步:导入必要的Maven的坐标 在Pom.xml文件中:这里推荐一个网站 下面的网站用来查找maven的坐标用的

https://mvnrepository.com/search?q=Spring

<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
    <scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.22</version>
</dependency>

第二部分:回忆一下Java是如何创建对象的呢! 首先要有一个类 在这个类中 要有无参 有参 set get tostring 方法 来完成一个标准的类

public class Student {
    private String name;
    private int age;
    /*非正常的数据类型*/
    private Date birthday;
}
//这个类中的set和get方法自己去写

然后测试类:运行结果如下所示

 @Test
    public void one() {
        //创建对象1
        Student student1 = new Student();
        //存放地址编码
        System.out.println("java代码中创建对象1Student student1 = new Student();");
        System.out.println(student1);
        //创建对象2
        Student student2 = new Student();
        //存放地址编码
        System.out.println("java代码中创建对象2Student student1 = new Student();");
        System.out.println(student2);
        //创建对象3
        Student student3 = new Student();
        System.out.println("java代码中创建对象3Student student1 = new Student();");
        System.out.println(student3);
        Date date = new Date();
        System.out.println("java代码中创建 Date date=new Date() 对象");
        System.out.println(date);
    }

上面的运行结果 观察发现上面创建的三个对象中 Student student1 = new Student(); 这行代码


思考一下 能不能不用 new 关键字创建对象呀!答案是有的  在框架中:

在applicationContext.xml文件中如何创建对象的呢 关于Bean来管理

观察下面的案例

<!-- 下面代码等价于Student student1 = new Student();-->
    <!--scope属性的学习-->
    <!--scope="prototype" 创建多个对象 创建多个空间
     singleton 创建单个对象的遍历  创建单个空间  -->
    <bean id="Student" class="com.Sping.Entily.Student" scope="prototype"></bean>
 @Test
    public void two() {
        //加载文件配置信息的文件将rescure文件夹下的applicationContext.xml文件导入其中
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
    }
  //强制转换类型
        Student student = (Student) ac.getBean("Student");
        System.out.println("Spring文件创建对象1");
        System.out.println(student);
//        Studenta
        Student studenta = (Student) ac.getBean("Student");
        System.out.println("Spring文件创建对象2");
        System.out.println(studenta);
//        Sping 框架中同一对象Ip地址  从Sping 框架中默认为单利模式 在同一块空间中
        Date date = new Date();

Student student = (Student) ac.getBean("Student");

得出结论一:id="Student" 要和getBean("Student"); 一致


第三部分:回忆一下Java是如何给对象赋值的呢! Java是这样做的  利用Set去赋值 利用get去取出值。

/*面向对象中如何用java代码进行赋值的呢?*/
    @Test
    public void two() {
        Student student = new Student();
        student.setName("我是利用Java创建出来的对象");
        student.setAge(2022);
        System.out.println(student.getName() + "=====" + student.getAge());
        System.out.println("--------------------------------------------------");
        Dog dao2 = new Dog();
        dao2.setAge(67);
        dao2.setName("我是第二只狗JAVA创建的对象哦哦哦");
        System.out.println("狗的年龄为"+dao2.getAge()+dao2.getName());
    }

Java对象取出值的结果

思考一下 能不能不用 set属性 关键字创建对象呀!答案是有的  在框架中:

<!--  Sping框架的方式给对象赋值-->
    <!--  <property name="K" value="V"></property> 一个属性对应一个值 -->
    <bean id="stu" class="com.Sping.Entily.Student">
        <!--Sping方式的赋值-->
        <property name="name" value="小王"></property>
        <property name="age" value="12"></property>
    </bean>
 <bean id="dog" class="com.Sping.Entily.Dog">
        <property name="name" value="小黑"></property>
        <property name="age" value="45"></property>
    </bean>
<bean id="dog" class="com.Sping.Entily.Dog">
    <property name="属性" value="值"></property> 在Bean里面写了一个标签property
</bean>
 @Test
    public void three() {
        /*Sping方式的赋值 第一步加载配置文件*/
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        Student stu = ac.getBean("stu", Student.class);
        System.out.println("利用Spring文件赋值");
        System.out.println(stu.getName() + "-----------" + stu.getAge());
        Dog dog = ac.getBean("dog", Dog.class);
        System.out.println("姓名为"+dog.getName()+"年龄为"+dog.getAge());
    }

这又是结果

第四部分:回忆一下Java是如何间接获得对象的呢 Java是这样做的?

public class Dog {
    private String name;
    private int age;
    /*非正常的数据类型*/
    private Date birthday;
    public Dog() {
    }
public class School {
    /*学校类*/
    public Student geStudent(){
        return new Student();
    }
    public  Dog getDao(){
        return  new Dog();
    }
    public static  Student getStudent1(){
        return  new Student();
    }
}
  @Test
    public  void three(){
        /*java代码的方式*/
        School school=new School();
        Student student=school.geStudent();
        System.out.println("java代码的方式获得"+student);
        System.out.println("----------------------------------------------------")
    }

School school=new School();

Student student=school.geStudent(); 思考一下Spring框架如何做呢?

 <!--间接方式获得-->
    <bean id="school" class="com.Sping.Entily.School"></bean>
    <bean id="student" factory-bean="school" factory-method="geStudent">
        <property name="name" value="我是间接方式获得的"></property>
        <property name="age" value="89"></property>
    </bean>
 ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
        Student s=ac.getBean("student",Student.class);
        System.out.println(s.getName()+"======"+s.getAge());

间接方式的获取运行结果

第五部分:Spring框架Ioc 静态方式获得

<!--  案例四/*静态方式获得*/-->
    <bean id="student1" class="com.Sping.Entily.School" factory-method="getStudent1">
        <property name="name" value="我是静态static"></property>
        <property name="age" value="12"></property>
    </bean>
 /*静态方式获得*/
    @Test
    public void four(){
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
        Student student1=ac.getBean("student1",Student.class);
        System.out.println(student1.getName()+"----------"+student1.getAge());
    }

运行结果

Spring框架在Bean中的管理(第十一课)_星辰镜的博客-CSDN博客

相关文章
|
22天前
|
数据采集 监控 前端开发
二级公立医院绩效考核系统源码,B/S架构,前后端分别基于Spring Boot和Avue框架
医院绩效管理系统通过与HIS系统的无缝对接,实现数据网络化采集、评价结果透明化管理及奖金分配自动化生成。系统涵盖科室和个人绩效考核、医疗质量考核、数据采集、绩效工资核算、收支核算、工作量统计、单项奖惩等功能,提升绩效评估的全面性、准确性和公正性。技术栈采用B/S架构,前后端分别基于Spring Boot和Avue框架。
|
1月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
42 4
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
148 1
|
1月前
|
Java API 数据库
Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐
本文通过在线图书管理系统案例,详细介绍如何使用Spring Boot构建RESTful API。从项目基础环境搭建、实体类与数据访问层定义,到业务逻辑实现和控制器编写,逐步展示了Spring Boot的简洁配置和强大功能。最后,通过Postman测试API,并介绍了如何添加安全性和异常处理,确保API的稳定性和安全性。
36 0
|
13天前
|
缓存 Java Spring
实战指南:四种调整 Spring Bean 初始化顺序的方案
本文探讨了如何调整 Spring Boot 中 Bean 的初始化顺序,以满足业务需求。文章通过四种方案进行了详细分析: 1. **方案一 (@Order)**:通过 `@Order` 注解设置 Bean 的初始化顺序,但发现 `@PostConstruct` 会影响顺序。 2. **方案二 (SmartInitializingSingleton)**:在所有单例 Bean 初始化后执行额外的初始化工作,但无法精确控制特定 Bean 的顺序。 3. **方案三 (@DependsOn)**:通过 `@DependsOn` 注解指定 Bean 之间的依赖关系,成功实现顺序控制,但耦合性较高。
实战指南:四种调整 Spring Bean 初始化顺序的方案
|
26天前
|
前端开发 Java 数据库连接
Spring 框架:Java 开发者的春天
Spring 框架是一个功能强大的开源框架,主要用于简化 Java 企业级应用的开发,由被称为“Spring 之父”的 Rod Johnson 于 2002 年提出并创立,并由Pivotal团队维护。
43 1
Spring 框架:Java 开发者的春天
|
19天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
37 2
|
18天前
|
消息中间件 NoSQL Java
springboot整合常用中间件框架案例
该项目是Spring Boot集成整合案例,涵盖多种中间件的使用示例,每个案例项目使用最小依赖,便于直接应用到自己的项目中。包括MyBatis、Redis、MongoDB、MQ、ES等的整合示例。
74 1
|
26天前
|
Java 数据库连接 开发者
Spring 框架:Java 开发者的春天
【10月更文挑战第27天】Spring 框架由 Rod Johnson 在 2002 年创建,旨在解决 Java 企业级开发中的复杂性问题。它通过控制反转(IOC)和面向切面的编程(AOP)等核心机制,提供了轻量级的容器和丰富的功能,支持 Web 开发、数据访问等领域,显著提高了开发效率和应用的可维护性。Spring 拥有强大的社区支持和丰富的生态系统,是 Java 开发不可或缺的工具。
|
1月前
|
人工智能 Java API
阿里云开源 AI 应用开发框架:Spring AI Alibaba
近期,阿里云重磅发布了首款面向 Java 开发者的开源 AI 应用开发框架:Spring AI Alibaba(项目 Github 仓库地址:alibaba/spring-ai-alibaba),Spring AI Alibaba 项目基于 Spring AI 构建,是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践,提供高层次的 AI API 抽象与云原生基础设施集成方案,帮助开发者快速构建 AI 应用。本文将详细介绍 Spring AI Alibaba 的核心特性,并通过「智能机票助手」的示例直观的展示 Spring AI Alibaba 开发 AI 应用的便利性。示例源