当前位置: 首页 > news >正文

Spring之最基础的创建与Bean的存储与获取(还有Maven加载jar包报错的解决方法)

目录

创建Spring项目

如何解决Maven加载jar包报错

存储Bean和取Bean


在Java中对象也称为Bean。所以后面我提到Bean,大家要知道我说的是什么。

创建Spring项目

我的idea是2022版本的,如果大家和我一样可以参考我的。

1.创建一个Maven项目。图片上忘了介绍,JDK下面有个勾选的地方,Add sample code这个我们不要勾选,勾选了就会给我们增加示例代码。

大家加载完成后,没问题的话应该和我这个一样:

如果很多人的加载不完,一直转圈,或者有的人的直接报错,大家可以按照下面的内容进行修改然后再重新加载。

2.此时,我们的项目还并不是一个Spring项目,我们需要在pom.xml中导入Spring依赖,我的JDK为8的,所以导入的Spring依赖不能为6开头的。写完之后,我们不要忘记点击右上角更新我们的maven仓库。

    <dependencies><!--导入Spring依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.37</version></dependency></dependencies>

3.更新完maven仓库后,此时,我们的项目才可以称为Spring项目。

如何解决Maven加载jar包报错

由于Maven是从国外的服务器上下载jar包,当超过一定时间还没有下载完成,那自然会进行报错,我们需要配置国内镜像,请大家根据我的步骤来进行操作。

1.修改当前项目的maven。

2.点击setting,然后查找Maven,修改路径。修改完成后,我们点击APPLY再点击OK。注意!我们在里面设置了setting.xml,我们就必须存在这个文件,否则就报错了!

3.按照和第二步骤同样的方法,找到新建项目中的maven,去修改对应路径,此时修改的是全局的maven路径,每次我们创建了新项目后,路径都是这个,就不用每次都进行修改了。这个每个版本不一样,所在地方不同,大家自己找找哈。

4.如果大家不存在settings.xml文件,大家可以来管我要,我给你们我的一个,直接粘贴到对应的位置上就行,如果大家都有settings.xml,那么我们接下来就要配置镜像源了。在文件中找到mirrors的地方,镜像的代码存进去。

     <mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror>

然后保存起来,此时我们重新加载我们项目中的maven。应该就没问题了。

存储Bean和取Bean

我们创建好Spring后,我们得把我们要Spring帮我们创建的对象告诉Spring,要不他不知道哪些类交给Spring管理了,哪些类不用它管理。

1.首先我们先创建一个学生类。

public class Student {public void study() {System.out.println("学生们在学习!!!");}
}

2.这个类我不想自己创建对象,我想交给Spring帮助我们完成,我们首先需要创建一个配置文件。

配置文件resources文件中,配置文件名字我们可以自己随便起,但是后缀名必须为xml。

3.在我们创建好的配置文件中,把下面这段代码粘贴过去。

<?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">
</beans>

4.将我们的Bean(学生类)存入到Spring中。

5.创建一个启动类(就是在这个类里面去获取对象)。

(1)首先获取Spring上下文对象,有两种方式

//方式一:        
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");//方式二:        
BeanFactory beanFactory = new XmlBeanFactory( new ClassPathResource("spring-config.xml"));//两种方式后面括号中存放的是我们配置文件的名字。

两者最终实现的效果一样,但是两者之间也存在区别。(面试题可能会考)

A.ApplicationContext和BeanFactory两者之间存在父子关系,前者是后者的子类。

B.BeanFactory提供了基础的访问容器的能力,既然ApplicationContext是BeanFactory的子类,那么就代表ApplicationContext也具备访问容器的能力,但是ApplicationContext除了具备了BeanFactory的功能外还具备了自己独特的功能:资源的支持,国际化的支持等。

C.这点区别也算最重要的!!BeanFactory在程序开始执行的时候,不会将配置文件中存放到容器的Bean全部加载了,只是需要哪个就加载哪个,而ApplicationContext则是配置文件中不管有多少Bean存放到Spring中,都是一次性的将所有的Bean加载并初始化。

(2)通过上下文对象取出我们的存入到Spring中的Bean对象。(这里我用的是ApplicationContext获得上下文对象,一般也是用这个)

会调用getBean方法获取相应的对象。这个getBean方法进行了重载,所以有三种形式。大家看下面的代码

        //通过上下文对象获取到bean对象//方式一:通过存入的id来取出对象//id是我们在配置文件中<bean>标签中设置的id要对应上!由于getBean()返回类型为Object,所以要强转。Student student = (Student) context.getBean("student");//方式二:通过类取出对象,后面括号中填写的是类名.class,getBean(类.class)返回的就是对应的类,不用强转Student student1 = context.getBean(Student.class);//方式三(建议大家都采用这种):通过id和类取出对象Student student2 = context.getBean("student",Student.class);

A.当我们采用类名的时候,会有弊端,当我们同一个Bean类,我们存入Spring多次,每次都起不同的名字,当我们通过类访问的时候会报错。(因为它不唯一,Spring不知道你想用哪个)

B.当我们用id访问对象的时候,如果我们类少的时候,可以保证id可能不会重复,当我们有很多的时候,我们可能会造成id重复,此时访问也会报错。原因就是,你不同类采用了同样的id,Spring怎么知道你实际想用的哪个呢?

C.所以为了rangSpring更加清楚的知道我们究竟想用哪个Bean对象,我们最好采用第三种方式。

(3)我们从Spring中获得了对象后,我们就可以运用了,操作对象中的属性或方法等。

http://www.lryc.cn/news/420499.html

相关文章:

  • RabbitMQ应用问题 - 消息顺序性保证、消息积压问题
  • linux tcp通讯demo
  • 在 MongoDB 中,如何配置副本集以实现读写分离?
  • 虚拟dom-Diff算法
  • 01创建型设计模式——单例模式
  • 图像分割(一)
  • C++ 新经典:设计模式 目录(先留框架,慢慢来~)
  • go之命令行工具urfave-cli
  • 四种应用层协议——MQTT、CoAP、WebSockets和HTTP——在工业物联网监控系统中的性能比较
  • MySQL的脏读、不可重复读、幻读与隔离级别
  • 程序员前端开发者的AI绘画副业之路:在裁员危机中寻找新机遇
  • Burp Suite的使用和文件上传漏洞靶场试验
  • 如何在Ubuntu中安装deepin wine版的企业微信
  • 案例:Nginx + Tomcat集群(负载均衡 动静分离)
  • 【密码学】密码协议的分类:②认证协议
  • 异步编程(Promise详解)
  • DjangoORM注入分享
  • 【HBZ分享】Redis各种类型的数据结构应用场景
  • anaconda创建并且配置pytorch(完整版)
  • 高级java每日一道面试题-2024年8月10日-网络篇-你对跨域了解多少?
  • AtCoder Beginner Contest 365 A~E
  • 多机部署, 负载均衡-LoadBalance
  • (回溯) LeetCode 78. 子集
  • DQL数据查询语言(多表处理)—/—<7>
  • 力扣刷题总结
  • BLDC ESC 无刷直流电子调速器驱动方式
  • 解决 IntelliJ IDEA 编译错误 “Groovyc: Internal groovyc error: code 1” 及 JVM 内存配置问题
  • LeetCode.2940.找到Alice和Bob可以相遇的建筑
  • OFD板式文件创建JAVA工具-EASYOFD 四、文字 Text
  • 【概念速通】李群 lie group