Spring初使用:使用Spring创建对象

准备

为了方便获取spring所依赖的jar包,这里直接使用maven来创建项目(maven创建项目可以参考这篇文章:项目管理工具 Maven 的下载,安装,配置以及项目的创建和管理

项目结构
在这里插入图片描述
在pom.xml配置文件中添加spring的依赖

在这里插入图片描述
创建类Student

在这里插入图片描述

手动创建对象

在测试类中手动创建Student对象并执行out方法
在这里插入图片描述
在这里插入图片描述

使用spring创建对象


使用xml配置文件的方式创建对象

创建spring配置文件

在资源目录resources下创建spring配置文件,名称自定义

Ctrl + Alt + insert 搜索 xml 找到 Spring Config
在这里插入图片描述
在这里插入图片描述
在配置文件中使用bean标签创建对象,一个bean标签对应一个对象,id为对象名,class为类的全路径

格式:<bean id="对象名" class="类的全路径" ></bean>
在这里插入图片描述

加载spring配置文件

//        spring 配置文件名称
        String filename = "beans.xml";
//        ApplicationContext 就是spring的容器
//        ClassPathXmlApplicationContext 从类路径中加载spring配置文件
        ApplicationContext ac = new ClassPathXmlApplicationContext(filename);

从类路径中加载配置文件,就是从存放java文件编译后的class文件的目录中加载配置文件,maven项目编译后会自动将资源目录下的spring配置文件复制到类路径下,如果你的类路径下没有spring的配置文件,可以手动将其复制到该目录下

获取spring创建的对象

//        获取对象
//        通过对象id的方式获取,getBean()方法返回值为object,需要强转
        Student student = (Student) ac.getBean("student");

spring创建好对象后,会将对象存放到map中,也就相当于将对象存放到spring的容器中 格式为:map.put( 对象id , 对象),所以我们可以通过对象的id来从容器中获取对象

使用测试类测试
在这里插入图片描述
在这里插入图片描述

使用注解的方式创建对象


使用Component注解创建对象

在需要创建对象的类中添加Component注解,注解写在类的上面

格式:@Component(value = 对象名) 或 @Component(对象名) 或 @Component;不指定对象名时,默认对象名为类名的首字母小写

在这里插入图片描述
在配置文件中添加组件扫描器

格式:<context:component-scan base-package=“包名”></context:component-scan>

作用:扫描指定包及子包下的所有类,根据类中的注解创建对象

在这里插入图片描述
测试类测试
在这里插入图片描述
在这里插入图片描述
使用其他注解创建对象

以下注解也可以创建对象,但不同注解创建的对象会有不同的功能

@Repository :创建dao对象,用来访问数据库

@Service :创建Service对象,用来处理事务逻辑

@Controller:创建控制器对象,用来接收请求



spring在哪个阶段创建对象

spring在加载完配置文件后(执行完下列代码),就会将配置文件中的所有对象都创建出来

String filename = "beans.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(filename);

我们可以验证一下

在Student类中添加无参构造方法:
在这里插入图片描述

在配置文件中添加要创建的对象
在这里插入图片描述
运行测试方法
在这里插入图片描述
运行结果
在这里插入图片描述

由此可证明,在spring加载完配置文件后,会将配置文件中的所有对象都创建出来

获取容器中对象的数量

通过getBeanDefinitionCount()方法获取容器中对象的数量,返回值为int类型

配置文件

在这里插入图片描述
获取对象的数量
在这里插入图片描述
在这里插入图片描述

获取容器中对象的名称

通过getBeanDefinitionNames()方法获取容器中对象的名称,返回值是泛型为字符串的一个数组

配置文件

在这里插入图片描述
获取对象名称
在这里插入图片描述
在这里插入图片描述

创建非自定义类的对象

上面的例子中我们创建的是自定义类的对象,也就是这个类是我们自己创建的,那我们能否创建非自定义类的对象呢?也就是创建已经存在的类的对象

这里以创建String类的对象为例

spring配置文件
在这里插入图片描述
测试类
在这里插入图片描述
由测试方法可知,我们使用spring创建的String类的对象可以调用String对象的方法,所以,spring可以创建非自定义类的对象

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值