目录
本文须知
本文内容来自于B站孙帅suns的spring课程视频,由本人根据视频学习整理而成。然而,由于个人理解和整理的差异,可能存在部分地方的误差或讲解不够明确的情况。
为了获得更详细的课程内容和准确的解释,请您移步至B站,搜索孙帅suns获取详细课程视频内容,以便深入了解和学习。孙帅suns的视频将为您提供更全面、详细的知识和解释,帮助您更好地理解netty应用的相关内容。
在阅读本文时,请注意本文的目的是为了提供一个概述和个人整理的观点,而不是取代原始视频课程的内容。如有任何疑问或不明之处,建议您参考原始视频课程以获取更准确的信息。
感谢您的理解和支持!
在此附上B站对应课程视频链接:学不会Spring?因为你没有找对人
Spring程序环境
Spring的jar包
Spring的配置文件
配置文件的放置位置:任意位置,没有硬性要求
配置文件的命名:没有硬性要求,建议applicatonContext.xml
Spring的核心API
- ApplicationContext
- 作用:Spring提供的ApplicationContext这个工厂,用于对象的创建
- 好处:解耦合
- ApplicationContext接口类型
- 非Web环境:ClassPathXmlApplicationContext
- Web环境:XmlWebApplicationContext
- 重量级资源(如果一个对象它占用的内存比较多,那么就是重量级资源)
- ApplicationContext工厂会占用大量的内存
- 对于重量级资源来说,我们不会频繁的创建对象,一个应用只会创建一个工厂对象
- ApplicationContext工厂一定是线程安全的(多线程并发访问)
程序开发
开发步骤:
- 创建对象
- 对applicationContext.xml进行配置
- 通过工厂类获取对象
配置配置文件
<bean id = "person" class = "com.dida.pojo.person"/>
通过工厂类获取对象
ApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext.xml");
Person person = (person) ctx.getBean("person");
名词解释:spring工厂创建的对象,叫做bean或者组件component
Spring工厂的相关方法:
ApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext.xml");
//通过这种方式获取对象就不像上面一样需要强制类型转换
Person person = ctx.getBean("person", Person.class);
//当前Spring配置文件中,只能有一个Bean class 是Person类型
Person person = ctx.getBean(Person.class);
//获取的是spring工厂配置文件当中所有bean标签id的值
Spring[] beanDefinitionNames = ctx.getBeanDefinitionNames();
//根据类型获取spring配置文件当中相关类型的bean标签的id的值
Spring[] beanNameForType = ctx.getBeanNameForType(person.class);
//判断是否存在指定id的值的bean,不能根据name值来判断
ctx.containsBeanDefinition("a");
//判断是否存在指定id的值的bean,可以根据name值来判断
ctx.containsBean("a");
配置文件当中需要注意的细节:
- 只配置class属性:<bean class="com.dida.pojo.Person">
- 上面这种情况下,spring会默认给一个id值。
- 应用场景:
- 如果这个bean只需要使用一次,那么就可以省略id值;
- 如果这个bean会使用多次,或者被其他bean引用时,则需要设置id值;
- name属性:
- 作用:用于在spring配置文件当中,为bean对象定义别名(小名)。
- id属性和name属性相同的地方:
- ctx.getBean("")里面既可以写name的值也可以写id的值,都可以获取bean对象;
- <bean id="" class="">等效于<bean name="" class="">
- id属性和name属性的区别:
- 别名可以定义多个<bean name="p,p1,p2" class="">,但是id属性只能有一个值
- XML的id属性值命名要求:必须以字母开头,后续可以接字母、数字、下划线、连字符,不能以特殊字符开头,而name属性的值没有要求所以name属性会应用在特殊命名的场景下,但是XML发展到现在,这个对于id属性的限制已经不存在了。
Spring的底层实现原理
spring是可以调用类的私有构造方法来创建对象的