0、写在前面的话

本篇以一个简单的示例,描述了Spring通过容器对于Java类的装载和获取。在以下我们可以看到,有一个Java类Coder,我们全程并没有手动调用new来进行实例化,而是从Spring的容器ApplicationContext中去获取到了该类的实例化对象。

1、使用Maven建立Spring项目

<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.16.RELEASE</version>
</dependency>
</dependencies>
7
 
1
<dependencies> 
2
    <dependency>
3
        <groupId>org.springframework</groupId>
4
        <artifactId>spring-context</artifactId>
5
        <version>4.3.16.RELEASE</version>
6
    </dependency>
7
</dependencies>

使用maven建立项目,按Spring官方提供的dependency,IDE自动会下载关联Spring的相关核心包,如下图:
 

2、建立一个简单的Java类

public class Coder {
private String name;
private int age; public void print(){
System.out.println("Hello World");
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
}
}
24
 
1
public class Coder {
2
    private String name;
3
    private int age;
4

5
    public void print(){
6
        System.out.println("Hello World");
7
    }
8

9
    public String getName() {
10
        return name;
11
    }
12

13
    public void setName(String name) {
14
        this.name = name;
15
    }
16

17
    public int getAge() {
18
        return age;
19
    }
20

21
    public void setAge(int age) {
22
        this.age = age;
23
    }
24
}

3、建立Spring的配置文件

对于IDEA而言,pom.xml已经配置了Spring的依赖,那么在新建Spring的配置文件时,可以直接通过IDEA创建最基础的配置文件:
 
然后配置Java类的bean:
<?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 id="coder" class="dulk.learn.spring.Coder"></bean> </beans>
x
 
1
<?xml version="1.0" encoding="UTF-8"?>
2
<beans xmlns="http://www.springframework.org/schema/beans"
3
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
5

6
    <bean id="coder" class="dulk.learn.spring.Coder"></bean>
7

8
</beans>

4、初始化容器,获取实例

Spring提供了多种初始化容器的方式,其中最常见的有两种:
  • BeanFactory,早期的JavaBean工厂类实现(不推荐)
  • ApplicationContext,对BeanFactory的扩展,提供了更多的功能,如国际化处理、Bean自动装配等

BeanFactory
public class Test {
public static void main(String[] args) {
//BeanFactory
ResourcePatternResolver rpt = new PathMatchingResourcePatternResolver();
Resource resource = rpt.getResource("/applicationContext.xml");
BeanFactory bf = new XmlBeanFactory(resource);
Coder coder = (Coder) bf.getBean("coder");
coder.print();
}
}
10
 
1
public class Test {
2
    public static void main(String[] args) {
3
        //BeanFactory
4
        ResourcePatternResolver rpt = new PathMatchingResourcePatternResolver();
5
        Resource resource = rpt.getResource("/applicationContext.xml");
6
        BeanFactory bf = new XmlBeanFactory(resource);
7
        Coder coder = (Coder) bf.getBean("coder");
8
        coder.print();
9
    }
10
}

ApplicationContext
public class Test {
public static void main(String[] args) {
//ApplicationContext
ApplicationContext ac = new ClassPathXmlApplicationContext("/applicationContext.xml");
Coder coder = (Coder) ac.getBean("coder");
coder.print();
}
}
 
1
public class Test {
2
    public static void main(String[] args) {
3
        //ApplicationContext
4
        ApplicationContext ac = new ClassPathXmlApplicationContext("/applicationContext.xml");
5
        Coder coder = (Coder) ac.getBean("coder");
6
        coder.print();
7
    }
8
}

 

[03] Spring "Hello World"的更多相关文章

  1. 03 Spring的父子容器

    1.概念理解和知识铺垫 在Spring整体框架的核心概念中,容器是核心思想,就是用来管理Bean的整个生命周期的,而在一个项目中,容器不一定只有一个,Spring中可以包括多个容器,而且容器有上下层关 ...

  2. (03) spring Boot 的配置

    1. spring boot 的核心配置 spring boot 项目建立之后,已经创建好了application.properties 配置文件 其实, 配置文件还支持*.yml 格式的: 2. 多 ...

  3. Spring框架学习03——Spring Bean 的详解

    1.Bean 的配置 Spring可以看做一个大型工厂,用于生产和管理Spring容器中的Bean,Spring框架支持XML和Properties两种格式的配置文件,在实际开发中常用XML格式的配置 ...

  4. spring boot2.03 spring cloud Finchley.RELEASE遇到的问题

    1.spring cloud bus 本地不能更新 原因是@RefreshScope注解要加在需要更新的controller上 2.No instances found of configserver ...

  5. 03 Spring框架 bean的属性以及bean前处理和bean后处理

    整理了一下之前学习spring框架时候的一点笔记.如有错误欢迎指正,不喜勿喷. 上一节我们给出了三个小demo,具体的流程是这样的: 1.首先在aplicationContext.xml中添加< ...

  6. 03.Spring IoC 容器 - 初始化

    基本概念 Spring IoC 容器的初始化过程在监听器 ContextLoaderListener 类中定义. 具体由该类的的 configureAndRefreshWebApplicationCo ...

  7. 03 Spring对Bean的管理

    Spring创建bean的三种方式 1.第一种方式:使用默认构造函数创建 bean.xml <?xml version="1.0" encoding="UTF-8& ...

  8. 03 spring security执行流程分析

    spring security主要是依赖一系列的Filter来实现权限验证的,责任链设计模式是跑不了的.下面简单记录一下spring操作这些Filter的过程. 1. WebSecurityConfi ...

  9. 04 Spring:01.Spring框架简介&&02.程序间耦合&&03.Spring的 IOC 和 DI&&08.面向切面编程 AOP&&10.Spring中事务控制

    spring共四天 第一天:spring框架的概述以及spring中基于XML的IOC配置 第二天:spring中基于注解的IOC和ioc的案例 第三天:spring中的aop和基于XML以及注解的A ...

随机推荐

  1. curl 发送 post 请求

    curl -i -X POST -H 'Content-type':'application/json' -d '{"keyWord":"雅诗兰黛"," ...

  2. sql server: Graphs, Trees, Hierarchies and Recursive Queries

    --------------------------------------------------------------------- -- Chapter 09 - Graphs, Trees, ...

  3. pip install 报错

    问题描述,在使用pip安装django相关软件包时,提示错误如下: [root@test4 install]# pip install django==1.6 Downloading/unpackin ...

  4. 3dmax导入模型,解决贴图不显示的问题

    在3dmax中导入模型数据后,经常出现贴图不显示的情况,效果如下图: 解决方法: 1.怀疑是贴图文件的路径设置有误.快捷键 shift+T打开“资源追踪”界面,重新设置贴图的正确路径(这里如果快捷键无 ...

  5. .Net Core(一)环境搭建与基本使用

    .Net Core(一)环境搭建与基本使用 一.系统配置 a) Linux下如果想要打开类似任务管理器,可以使用top命令,在控制台会动态刷新CPU和内存占用.进程等信息.vmstat和free命令可 ...

  6. 洗礼灵魂,修炼python(28)--异常处理(2)—>运用异常

    你可能会想,卧槽这标题取的,前面不是说异常就是报错吗?异常还能运用? 是的,异常确实可以运用,可以刻意制造异常,在出现异常时捕获异常并对异常处理,所以进入本篇博文的话题—异常处理 异常处理: 异常处理 ...

  7. django模板语言之Template

    当前端的一些数据需要后端传送过来并展示时,用到了django的模板语言,模板语言的作用就是,在后端把一些处理好的数据,通过模板语言所规定的格式,通过render渲染,放到前端页面固定的位置展示.这之间 ...

  8. c# 百度地图api APP SN校验失败

    在使用c#调用百度地图Web服务api遇到的签名(sn校验)问题,在此记录一下,(ip白名单校验的请忽略) 1.首先获取ak与sk,这个两个东西可以从控制台中获取到 2.在这个地址:sn签名算法,里面 ...

  9. shell脚本之数组

    变量:存储单个元素的内存空间. 数组:存储多个元素的连续的内存空间. 数组名:整个数组只有一个名字: 数组索引:编号从0开始: 数组名[索引]: 引用数组中的某个元素:${ ARRAY_NAME [ ...

  10. vSphere ESXi 重新安装后的虚拟机恢复(转载)

    安装的 ESXi 的物理主机密码忘记,登录 不上了,需要重新安装 ESXi,安装后恢复原先物理主机上的 虚拟机的方法如下(VMFS分区完好): 关于 VMFS 分区: ESXi 的安装时会划分一个分区 ...