Spring
Posted xue_yun_xiang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring相关的知识,希望对你有一定的参考价值。
一、什么是Spring
Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。
Spring 就是一个容器,容器内放置了bean(就是放置到容器中的对象),容器管理bean的生命周期
容器启动,创建对象并加入到容器中,变为bean。
二、Spring核心容器
核心容器 是 BeanFactory 完成bean的获取
BeanFactory 还有一个子类 ApplicationContext,不仅包含了BeanFactory的所有功能,还添加了对国际化、资源访问、事件传播等方面的支持。
国际化:多语言支持
资源访问:可以方便访问解析 resources 下 xml
事件传播:类似观察者模式可以发布消息
BeanFactory ,ApplicationContext 都是接口,使用必选使用他们的实现类
BeanFactory —>XmlBeanFactory
ApplicationContext ---->ClassPathXmlApplicationContext,FileSystemXmlApplicationContext
三、Spring入门
1、引入依赖
<properties>
<!--在当前pom 或者父类pom 中声明属性 -->
<spirng.version>5.0.16.RELEASE</spirng.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spirng.version}</version>
</dependency>
</dependencies>
2、创建一个bean.xml
<?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">
<!--
<bean 告诉 容器初始化时 要 创建一个 名字 为 student 的对象,加入到容器中
id="student" 对象的名字,唯一标识
class="com.qfedu.entity.Student" 创建对象 的类
<property name="id" value="100"></property> 对类中的属性进行赋值 注意必须有setter
-->
<bean id="student" class="com.qfedu.entity.Student">
<property name="id" value="100"></property>
<property name="name" value="小明"></property>
</bean>
<bean id="student2" class="com.qfedu.entity.Student">
<property name="id" value="101"></property>
<property name="name" value="小红"></property>
</bean>
</beans>
3、测试:
public class SpringTest {
public static void main(String[] args) {
//获取核心容器一
BeanFactory beanFactory = new XmlBeanFactory(new FileSystemResource("E:\\\\JAVA\\\\qianfeng\\\\myself\\\\day47maven\\\\code\\\\day52_spring_1\\\\src\\\\main\\\\resources\\\\com\\\\qfedu\\\\bean.xml"));
//获取核心容器二
ApplicationContext applicationContext = new FileSystemXmlApplicationContext("E:\\\\JAVA\\\\qianfeng\\\\myself\\\\day47maven\\\\code\\\\day52_spring_1\\\\src\\\\main\\\\resources\\\\com\\\\qfedu\\\\bean.xml");
//获取核心容器三
//使用当前应用的根路径获取
ApplicationContext applicationContext1 = new ClassPathXmlApplicationContext("com/qfedu/bean.xml");
//从容器中获取bean对象 student id唯一标识
Student student = (Student)applicationContext1.getBean("student");
//从容器中获取一个类型为Student.class对象,注意:如果容器中有两个类型为Student的对象,则报错
// 'com.qfedu.entity.Student' available: expected single matching bean but found 2: student,student2
//Student student2 = beanFactory.getBean(Student.class);
System.out.println(student);
//System.out.println(student2);
}
}
以上是关于Spring的主要内容,如果未能解决你的问题,请参考以下文章
Spring boot:thymeleaf 没有正确渲染片段
What's the difference between @Component, @Repository & @Service annotations in Spring?(代码片段
spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段
Spring Rest 文档。片段生成时 UTF-8 中间字节无效 [重复]
解决spring-boot启动中碰到的问题:Cannot determine embedded database driver class for database type NONE(转)(代码片段