Idea社区版安装Spring Boot Helper,才能创建创建Spring Boot项目(Spring项目不需要,我们可以提前安装),如果是旗舰版不需要安装这个插件。
注意这个插件在IDEA2021.3版本以后转为收费插件,我们使用2021.3的版本即可
为什么要配置maven国内源呢?如果不配置可能导致创建Spring/Spring Boot失败,或者是在maven项目中引入jar失败,从而导致项目运行不起来。
【第一步】在设置中(总共有两个设置),如下图所示,我们在以下两个设置中,进行相应的更改。(两个设置中的内容一样,但要设置两次,我们只将一个)
【第二步】打开Maven项目设置,然后勾选两个对号,去掉一个对号(这个对号,有的人可能没有不用管)
【第三步】在setting.xml中配置国内源
如果没有这个文件,我们直接下载(settings.xml · 风夏/JavaEE进阶 - 码云 - 开源中国 (gitee.com) ),放入当前文件夹即可
如果有这个文件,我们不能直接下载或覆盖此文件,而是打开文件,在相应位置添加词语句
alimaven
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
central
【第四步】删除本地所有jar包,重新下载。
如果下载失败,我们重新检查以上步骤,如果还是下载失败,我们切换网络(可能这个节点连接不上),重新下载,或等4个小时再次下载。
【注意】注意路径中不能有中文
首先创建一个Maven项目,然后一路下一步。在项目的pom.xml中添加Spring框架的支持,内容如下:
org.springframework spring-context 5.2.3.RELEASE org.springframework spring-beans 5.2.3.RELEASE
从上述的配置中可以看说,添加的框架有spring-context:spring上下文,还有spring-beans:管理对象的模块。
我们在创建好的项目Java文件夹下创建一个启动类App,包含main方法即可。
public class App {
public static void main(String[] args) {
}
}
储存Bean分为两步:
所谓的Bean就是Java语言中的一个普通的对象,实现代码如下:
public class User {
public String sayHi(String name) {
return name + "hello!";
}
}
在创建好的项目中添加Spring配置文件spring-config.xml,将此文件放到resources的根目录下面。
Spring的配置文件的固定格式为以下内容(无需记忆,粘贴即可)
接下来,将User对象注册到Spring中即可,具体操作是在
这就像我们创建一个公司,不能只有自己知道,我们在政府注册后,就可以享受相应的优惠了。
获取并使用Bean对象分为三步:
public class App {
public static void main(String[] args) {
//1. 获取上下文对象
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
// 获取上下文对象的另一种方法
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
}
}
这是两种获取上下文对象的不同方式,但是我们现在只使用第一种。
ApplicationContext 与 BeanFactory 有什么区别?(常见的面试题)
- ApplicationContext继承了BeanFactory,它具有父类所有的功能,还添加了对国际化支持、资源访问支持、以及事件传播等方面的支持。
- 从性能来讲:ApplicationContext是在运行的使用全部加载好所有的Bean对象,在使用的时候,直接去取即可,除了加载慢一点,运行起来非常的快;BeanFactory是在使用某个Bean的是由才创建这个对象,这导致了运行起来非常的慢。这就相当于在没有使用工具之前,一个把工具包买好了,一个是在使用某个工具的时候再去单独买。
【更多了解】BeanFactory主要是在以前使用,以前内存很贵,当时的计量单位可能是M或者是KB,这就导致了开发者不得不减少内存的使用,那个时候使用BeanFactory是很正常的。但是随着技术的进步,内存越来越不值钱,人们要求软件的效率越来越高,这就导致我们必须一次全部加载完所有的Bean,以达到随用随取的目的。
public class App {
public static void main(String[] args) {
//1. 获取上下文对象
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
// 获取上下文对象的另一种方法
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
User user1 = (User)context.getBean("user");
User user2 = (User)beanFactory.getBean("user");
user1.sayHi("user1");
user2.sayHi("user2");
}
}
Bean的Id要一一对应
getBean()方法有很多种重载的方法,我们可以使用重载的方法来获取对象
//其他获取对象的方法
user1 = context.getBean("user", User.class);
user1 = context.getBean(User.class);
建议使用Id+类名的方式来获取对象。从类名获取对象的方式如果只有一个符合这个类名的Bean还可以使用,如果有两个都是用相同的类名,会导致错误(后面我们会可能从方法的返回值获取对象,可能导致放回的类型都是User,从类名获取对象就可能导致错误)