Spring

Posted xue_yun_xiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring相关的知识,希望对你有一定的参考价值。

一、什么是Spring

Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。

Spring 就是一个容器,容器内放置了bean(就是放置到容器中的对象),容器管理bean的生命周期
容器启动,创建对象并加入到容器中,变为bean。

融合了IOC、AOP及Web MVC等功能。
IOC:控制反转
AOP:面向切面编程
MVC:mvc 设计模式

二、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(转)(代码片段

一张图帮你记忆,Spring Boot 应用在启动阶段执行代码的几种方式