网站怎么做漂亮点,免费空间100m,镇江企业宽带,wordpress网站推广主题目录 一、创建Spring项目
1、创建Maven项目 2、配置maven国内源 3、引入spring依赖
4、添加启动类
二、将Bean对象存储到Spring#xff08;IoC容器#xff09;
1、创建Bean对象
2、将Bean存储到spring#xff08;容器#xff09;中
3、获取Bean对象
3.1、Applicatio…目录 一、创建Spring项目
1、创建Maven项目 2、配置maven国内源 3、引入spring依赖
4、添加启动类
二、将Bean对象存储到SpringIoC容器
1、创建Bean对象
2、将Bean存储到spring容器中
3、获取Bean对象
3.1、ApplicationContext与BeanFactory的区别
3.2、getBean方法的更多用法参数不同用法不同 4、总结 一、创建Spring项目
1、创建Maven项目
因为Spring项目是基于Maven的。这里小编使用的idea是社区版2021.3.2使用的JDK是1.8。 2、配置maven国内源
1️⃣配置当前项目的maven国内源 找到setting.xml文件之后添加maven国内阿里源 如果你的电脑上已经存在settings.xml文件你只需要将这个mirror添加到settings.xml文件中的mirrors标签中即可。
mirroridalimaven/idnamealiyun maven/nameurlhttp://maven.aliyun.com/nexus/content/groups/public//urlmirrorOfcentral/mirrorOf
/mirror
2️⃣配置新项目的maven国内源
因为上述中已经在setting.mxl中添加了mirror所以这里就直接勾选就可以不用再配置settings.xml文件通过这种方式配置了maven之后之后创建了新的maven之后就需要再配置了。 3、引入spring依赖
在项目的pom.xml中添加Spring框架的支持添加spring-contextspring上下文和spring-beans管理对象模块。
dependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion5.2.3.RELEASE/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-beans/artifactIdversion5.2.3.RELEASE/version/dependency/dependencies
添加完成之后出现了爆红表示这些文件没有下载点击左边的Maven之后点击刷新。或者也可以直接点击刷新在第一次添加依赖时idea的左上角会出现一个小标签点击刷新即可触发下载。 4、添加启动类
最后在创建好的Java文件下创建一个启动类包含main方法即可。
public class App {public static void main(String[] args) {}
} 二、将Bean对象存储到SpringIoC容器
1、创建Bean对象
比如我们创建一个UserService类然后注入到spring中。这里所谓的Bean就是Java语言中的一个普通的类一点点区别就是可能会被多次使用的对象叫做Bean。
package com.zf.demo;public class UserService {public void func(){System.out.println(hello UserService.);}
} 2、将Bean存储到spring容器中
这里首先需要在resource中创建一个spring-config.xml配置文件。 配置内容如下
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contenthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd/beans
然后Bean对象通过spring-config配置文件注入到spring中就是在配置文件中加入下面的一行代码。
bean iduser classcom.zf.demo.UserService/bean
这里id表示存储到容器中bean对象的名称class表示的bean对象的路径包名类名。这里只是进行了申明并没有真正的注入到spring中只有使用到这个对象中的方法时才会真正的被注入到spring中。 3、获取Bean对象
获取并使用Bean对象首先我们需要得到spring上下文对象因为对象都交给了spring管理所以获取对象要从spring中获取然后通过spring上下文获取某个指定的Bean对象然后使用
1️⃣使用ApplicationContext接口来获取spring上下文对象
这里需要使用ApplicationContext接口的实现类ClassPathXmlApplicationContext并且需要指定配置文件也就是我们刚刚创建的spring-config.xml文件。
import com.zf.demo.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class App {public static void main(String[] args) {//1、先得到Spring上下文对象得到容器对象ApplicationContext context new ClassPathXmlApplicationContext(spring-config.xml);//2、得到Bean这里使用依赖查找的方法UserService userService (UserService) context.getBean(user);//3、使用Bean对象非必须userService.func();}
}这里使用getBean方法进行依赖查找这里方法中使用的参数需要和我们在spring-config.xml文件中id属性值相同。
2️⃣使用BeanFactory接口来获取上下文对象。
import com.zf.demo.Student;
import com.zf.demo.UserService;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;public class App2 {public static void main(String[] args) {//1、得到Spring 上下文对象得到容器对象BeanFactory context new XmlBeanFactory(new ClassPathResource(spring-config.xml));//2、获取BeanUserService userService (UserService) context.getBean(user);//3、使用BeanuserService.func();}
}这个方式在实际中并不推荐使用这个方式随着时代的发展已经过时了之前由于电脑内存较小的情况下需要考虑内存占用的问题而现在并不需要考虑这些。
3.1、ApplicationContext与BeanFactory的区别
相同点
都是容器管理对象都可以获取Bean对象。
不同点
ApplicationContext属于BeanFactory的子类BeanFactory提供了基础的访问容器的能力而ApplicationContext不仅继承了BeanFactory的所有功能之外它还拥有独有的特性添加了对国际化的支持资源访问支持以及时间传播等方面的支持。他们的加载机制不同BeanFactory是按需加载Bean属于懒加载使用它程序启动的时候非常快但是需要获取Bean对象时就会慢一些而ApplicationContext在启动的时候会将所有的Bean对象加载完成所以启动会较慢但是获取对象的时候就非常快的。
✨ 这里我们通过两个Bean对象来了解他们启动时的加载机制。
1️⃣在创建一个student类并且给两个类中都写一个构造方法其中写一个打印的方法可以观察启动时对象有没有加载。
package com.zf.demo;public class UserService {public UserService(){System.out.println(hello UserService Init.);}public void func(){System.out.println(hello UserService.);}
}package com.zf.demo;public class Student {public Student(){System.out.println(Student Init.);}
}2️⃣然后将新创建的类注入到spring中也就是在spring-config.xml文件中配置bean. 3️⃣然后启动App类使用ApplicationContext来获取上下问对象App2类使用BeanFactory来获取上下问对象 3.2、getBean方法的更多用法参数不同用法不同
1️⃣用法1根据对象的名称来获取Bean对象
UserService userService (UserService) context.getBean(User);
2️⃣用法2根据类型获取Bean对象 UserService userService context.getBean(UserService.class);使用这种方式获取Bean对象当Beans中只有一个类的实例是没有问题的但是当有这个类的多个实例就会产生问题。 通过上述方式来获取Bean对象 这里就报NoUniqueBeanDefinitionException异常表示注入的对象不是唯一的。 3️⃣方式3根据名称和类型来获取Bean对象
UserService userService context.getBean(user,UserService.class);这种获取Bean对象的方式相比于第一种更加优雅不需要使用强制类型转换。相比于第二种也不会出现方式2中的问题。 4、总结
1️⃣首先是创建spring项目
2️⃣存对象 创建普通类然后将普通类配置到spring-config.xml文件中也就是注入到spring容器中 3️⃣取对象 得到spring上下文并读取spring的配置文件获取某个Bean对象使用Bean对象