SpringBoot快速回顾(分别使用注解和xml方式去声明Bean,获取Bean)

news2024/9/24 19:20:16

SpringBoot快速回顾(@configuration注解)

  • 1. 使用xml声明Bean
    • 1.1 创建测试实体类
    • 1.2 创建xml文件(目的:将实体类声明成Bean)
    • 1.3 测试
  • 2. 使用注解@configuration声明Bean
    • 2.1 已经声明过实体类Student
    • 2.2 定义配置类
    • 2.3 测试
  • 3. 使用注解@ImportResource将xml文件导入config
    • 3.1 借助注解@ImportRecource导入配置类
    • 3.2 测试

创建一个Maven项目,配置依赖环境,再编程测试

<?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>com.zjh</groupId>
    <artifactId>001-pre</artifactId>
    <version>1.0.0</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <!-- 控制配置maven构建项目的参数设置,设置jdk版本 -->
    <build>
        <!-- 配置插件 -->
        <plugins>
            <!-- 配置具体插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <!-- 插件的名称 -->
                <artifactId>maven-compiler-plugin</artifactId>
                <!-- 插件的版本 -->
                <version>3.8.1</version>
                <!-- 配置插件的信息 -->
                <configuration>
                    <!-- 告诉maven,项目是在jdk1.8上编译的 -->
                    <source>1.8</source>
                    <!-- 程序应该运行在jdk1.8上 -->
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

1. 使用xml声明Bean

1.1 创建测试实体类

在这里插入图片描述

package com.zjh.vo;

public class Cat {

    private String Name;
    private String Sex;

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public String getSex() {
        return Sex;
    }

    public void setSex(String sex) {
        Sex = sex;
    }

    @Override
    public String toString() {
        return "Cat{" +
                "Name='" + Name + '\'' +
                ", Sex='" + Sex + '\'' +
                '}';
    }
}

package com.zjh.vo;

public class Student {

    private String Name;
    private String Sex;

    public void setName(String name) {
        Name = name;
    }

    public void setSex(String sex) {
        Sex = sex;
    }

    public String getName() {
        return Name;
    }

    public String getSex() {
        return Sex;
    }

    @Override
    public String toString() {
        return "Student{" +
                "Name='" + Name + '\'' +
                ", Sex='" + Sex + '\'' +
                '}';
    }
}
package com.zjh.vo;


import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

//利用注解生成Dog类的对象dog
@Component("dog")
public class Dog {

    @Value("dog.name")
    private String name;

    @Value("dog.sex")
    private String sex;

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                '}';
    }
}

1.2 创建xml文件(目的:将实体类声明成Bean)

目录框架
在这里插入图片描述

文件名:beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--声明bean-->
    <bean id="myStudent" class="com.zjh.vo.Student">
        <property name="name" value="Ove"/>
        <property name="sex" value=""/>
    </bean>
</beans>

文件名:ApplicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="myCat" class="com.zjh.vo.Cat">
        <property name="name" value="狸猫"/>
        <property name="sex" value=""/>
    </bean>
</beans>

1.3 测试

目录结构
在这里插入图片描述

public class MyTest {

    //XML测试案例
    @Test
    public void test1(){
        String config = "beans.xml";
        ApplicationContext ctx = new ClassPathXmlApplicationContext(config);
        Object stu = ctx.getBean("myStudent");
        System.out.println(stu);
    }
}

控制台测试结果:
在这里插入图片描述

总结:先创建实体类student----->再创建beans.xml (将实体类声明为Bean)------>获取beans.xml文件-------->取出声明的Bean


注意:打印的数据 是在 beans.xml 中定义的

2. 使用注解@configuration声明Bean

2.1 已经声明过实体类Student

2.2 定义配置类

目录框架
在这里插入图片描述


//@Configuration表明这个类是一个配置类
@Configuration
public class springConfig {

    /*
        创建一个方法,方法的返回值是该类的对象,使用注解Bean注入到容器里
        可以修改bean名称:@Bean(name = "DIY")\也可不修改,默认为方法名
    */
     @Bean(name = "DIY_Student")
    public Student createStudent(){
        Student s1 = new Student();
        s1.setName("佳");
        s1.setSex("男");
        return s1;
    }

    @Bean(name = "DIY_Cat")
    public Cat creatCat(){
        Cat c1 = new Cat();
        c1.setName("木偶猫");
        c1.setSex("公");
        return c1;
    }
}

2.3 测试

public class MyTest {

    //config测试案例
    @Test
    public void test2(){

        ApplicationContext ctx = new AnnotationConfigApplicationContext(springConfig.class);
        Object stu = ctx.getBean("DIY_Student");
        Object cat = ctx.getBean("DIY_Cat");
        System.out.println(stu);
        System.out.println(cat);
    }
 }

控制台输入结果
在这里插入图片描述

总结:先创建实体类student----->创建配置类,将Bean注入到容器里------------>最后获取配置类------->取出声明的Bean


注意:最大的区别 就是不需要创建xml文件,直接使用写类和方法的方式代替

3. 使用注解@ImportResource将xml文件导入config

有一种情况下,我们已经创建了一些xml文件,需要读取xml文件。与此同时,我们还有配置类。
此时代码就有些混乱,因为读取这两个方式定义的Bean,方式不一样(参考两个测试代码)。
为了规范统一,将xml导入到配置类,获取Bean的时候就使用一个方式就可以。

3.1 借助注解@ImportRecource导入配置类


//@Configuration表明这个类是一个配置类
@Configuration
//@ImportResource表明需要导入其他的xml配置文件
@ImportResource(value = {"classpath:ApplicationContext.xml","classpath:beans.xml"})
//容器读取到配置文件,但无法找到文件里面写的对象dog,这个dog对象是使用注解@component生成的
@PropertySource("classpath:Dog.properties")
    //使用组建扫描器扫描这个路径下的包,看哪里使用了注解component---原来是Dog类中使用了注解,生成了对象dog
@ComponentScan(basePackages = "com.zjh.vo")
public class springConfig {

    /*
        创建一个方法,方法的返回值是该类的对象,使用注解Bean注入到容器里
        可以修改bean名称:@Bean(name = "DIY")\也可不修改,默认为方法名
    */
    @Bean(name = "DIY_Student")
    public Student createStudent(){
        Student s1 = new Student();
        s1.setName("佳");
        s1.setSex("男");
        return s1;
    }

    @Bean(name = "DIY_Cat")
    public Cat creatCat(){
        Cat c1 = new Cat();
        c1.setName("木偶猫");
        c1.setSex("公");
        return c1;
    }
}

在这里插入图片描述
在这里插入图片描述

3.2 测试

 //importResource测试案例
    @Test
    public void test3(){

        ApplicationContext ctx = new AnnotationConfigApplicationContext(springConfig.class);
        Object cat = ctx.getBean("myCat");
        Object student = ctx.getBean("myStudent");
        System.out.println(cat);
        System.out.println(student);
    }

控制台打印结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/488241.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Lim测试平台变量使用规则介绍

一、Lim测试平台简介 Lim测试平台是一款轻量级的接口测试平台&#xff0c;也是为数不多使用python作为后端接口建设的语言。 正如它的名字我们希望在开展接口测试时能够“四两拨千斤”&#xff01;让用户操作更少但开展建设的效率更高。因此我们做了许多交互细节上的优化和创新…

Elasticsearch:人类语言到 ElasticSearch 查询 DSL

Elasticsearch 为开发者提供了强大的搜索功能。Elasticsearch 使用 DSL 来进行查询。对于很多从关系数据库过来的人&#xff0c;这个很显然不很适应。虽然我们可以使用 SQL 来进行查询&#xff0c;但是我们必须通过一些命令来进行转换。我们可以通过阅读文章&#xff1a; Elast…

SpringBoot统一功能处理(统⼀⽤户登录权限验证、统⼀异常处理、统⼀数据格式封装)

统⼀⽤户登录权限验证 1、最初的用户登录效验:在每个方法里面获取session和 session 中的用户信息&#xff0c;如果存在用户&#xff0c;那么就认为登录成功了&#xff0c;否则就登录失败了。 2、第二版用户登录效验:提供了统一的方法&#xff0c;在每个需要验证的方法中调用…

神经网络模型压缩技术—剪枝

目录 1.模型压缩定义 2.模型压缩必要性及可行性 3.模型压缩分类 3.1 主流分类 3.2 前端和后端 4.剪枝 4.1 剪枝定义 4.2 剪枝分类 4.2.1 基于粒度 4.2.2 基于是否结构化 4.2.3 基于目标 5. 结构化剪枝和非结构化剪枝 5.1 非结构化剪枝&#xff08;移除单个权重或神…

【Python习题集1】Python 语言基础知识

python习题 一、实验内容二、实验总结 一、实验内容 1、运用输入输出函数编写程序&#xff0c;将华氏温度转换成摄氏温度。换算公式&#xff1a;C(F-32)*5/9,其中C为摄氏温度&#xff0c;F为华氏温度。 &#xff08;1&#xff09;源代码&#xff1a; ffloat(input(输入华氏温…

swift 技术 监听电话中断

一直觉得自己写的不是技术&#xff0c;而是情怀&#xff0c;一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的&#xff0c;希望我的这条路能让你们少走弯路&#xff0c;希望我能帮你们抹去知识的蒙尘&#xff0c;希望我能帮你们理清知识的脉络&#xff0…

做好FP独立站有6大要点,注意!

跨境电商做FP独立站已经见怪不怪了&#xff0c;但要注意哪些要点才能做好一个成功的FP独立站呢&#xff0c;今天就跟大家聊一聊。 做好FP独立站有6个要点 1.选品 独立站运营选择产品的方向往往是抓住非主流、新奇等特征。不推荐在成熟平台上销售受欢迎的普通商品&#xff0c;…

Elasticsearch详解

文章目录 概览使用与ES交互索引创建索引查询索引删除文档创建修改文档局部修改文档查询文档删除全查询 整合SpringBootpom依赖application.ymlElasticsearchAutoConfigurationElasticsearchPropertiesElasticsearchConstantPersonSearchPageHelperPersonServiceBaseElasticsear…

zabbix 使用自定义命令做监控项

环境&#xff1a;Linux zabbix6 问题&#xff1a;某个监控项的值为linux终端的shell命令输出&#xff0c;需要做一个zabbix自定义监控项 解决办法&#xff1a;参考官方文档使用userparameters方法 背景&#xff1a;我需要监控Linux某个文件夹的文件数量&#xff0c;并设置阈值…

详解c++---stack和dequeue的介绍

目录标题 stack介绍stack的定义stack的数据插入stack中数据的个数stack数据删除stack中数据的查看判断stack对象是否为空stack对象的数据交换queue的介绍queue的定义queue的数据插入frontbackqueue的元素个数queue中元素的删除emptyqueue的数据交换 stack介绍 首先stack是一个…

windows kafka mq 安装和使用介绍 及踩坑记录 及集群架构kafka实现架构 各自运行机制 一次性看明白

目录 介绍 安装集群 简单介绍按照步骤 zookeeper 安装 kafka安装 基础配置3个节点 在配置三个启动bat 重点 常见问题 内存不够配置文件中增加如下 java.io.IOException: Map failed 基础使用 创建主题 查看创建 生产者 消费者 应用场景 kafka一些原理和特点 …

让自动化测试秒杀繁琐操作?试试PO模式设计框架

目录&#xff1a;导读 引言 po模式 优势&#xff1a; 目录解释&#xff1a; 页面对象设计模式&#xff1a; base基础层&#xff1a; page对象层&#xff1a; test:测试层 data数据层&#xff1a; common层&#xff1a; untils: config层&#xff1a; run层&#xff1a;…

救生衣、划船背心、救生圈、U 形救生圈和投掷式浮垫等个人漂浮设备 (PFD)UL报告标准要求

个人漂浮设备 (PFD) 个人漂浮设备 (PFD) 是帮助人们在水中保持漂浮状态的装备。个人漂浮设备是一个范围较大的商品分类&#xff0c;其中包括救生衣、划船背心、救生圈、U 形救生圈和投掷式浮垫 救生衣 救生衣是一种在使用者正确穿戴时可为其提供支持的服装或设备&#xff0c;由…

Redis【性能 01】Redis 5.x 6.x 7.x 共5个不同版本延迟及性能测试对比分析(单机版默认配置)

延迟及性能测试比对分析过程 1.环境说明2.测试结果Version 5.0.3【待优化版本】Version 5.0.7【云服务器使用的版本】Version 5.0.14【5.x最终版】Version 6.2.12【6.x最终版】Version 7.2-rc1【当前最新的发布候选版】 3.汇总分析3.1 延迟测试结果汇总3.1 性能测试结果汇总 4.…

今天 国际青年节 “International Youth Day “

《劝学》孟郊 击石乃有火&#xff0c;不击元无烟。 人学始知道&#xff0c;不学非自然。 万事须己运&#xff0c;他得非我贤。 青春须早为&#xff0c;岂能长少年。 Strike stones to make it burn; No smoke unless you strike. Youre crude if you dont learn; And you…

Syncthing文件同步 - 免费搭建开源的文件自动同步服务器并公网远程访问【私人云盘】

文章目录 1. 前言2. Syncthing网站搭建2.1 Syncthing下载和安装2.2 Syncthing网页测试2.3 注册安装cpolar内网穿透 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 在数据爆炸的当下&#xff0c;每天都会产生海量的数据&#xff0c;这些…

SQL注入攻防入门详解

毕业开始从事winform到今年转到 web &#xff0c;在码农届已经足足混了快接近3年了&#xff0c;但是对安全方面的知识依旧薄弱&#xff0c;事实上是没机会接触相关开发……必须的各种借口。这几天把sql注入的相关知识整理了下&#xff0c;希望大家多多提意见。 &#xff08;对于…

ACIS的拓扑基础数据结构

在ACIS中,拓扑基础数据结构按照从低维到高维的顺序包括: Vertex(顶点):表示空间中的一个点,用于定义点的位置和属性。Edge(边):由两个顶点连接而成,具有方向属性,用于定义直线段和圆弧。Coedge(共面边):表示面的边缘,也就是一条边可以被多个面共享。Coedge有两个…

SpringCloud学习(七)——统一网关Gateway

文章目录 1. 网关介绍2. 网关搭建2.1 引入依赖2.2 创建启动类2.3 编写配置2.4 测试 3. 路由断言工厂4. 路由过滤器4.1 过滤器配置4.2 全局过滤器4.3 过滤器执行顺序 5. 跨域问题处理 1. 网关介绍 到现在&#xff0c;我们可以使用Nacos对不同的微服务进行注册并管理配置文件&am…

淘宝天猫公布618整体活动节奏

5月4日消息&#xff0c;淘宝直播618选品会近日在杭州成功举办&#xff0c;淘宝直播商品中心团队和天猫、全球购行业小二在会上与商家、达人主播等参会人士探讨如何选品才能打动消费者、如何保障货品的质量安全、如何完善商品的售后服务等问题&#xff0c;共同分析直播电商行业中…