1.导包

所有和spring有关的包(有mybatis包的忽略),后期会使用maven引入

2. 引入spring的配置文件

可命名为applicationContext-service.xml或spring.xml

  • 注意:这个文件要放在src目录下!
<?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
https://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="..." class="..."></bean> </beans>

3. 创建service层的类

接口:UserService.java

public interface UserService {
//获取信息的方法
public void getMsg(String msg);
}

实现类:UserServiceImpl.java

public class UserServiceImpl implements UserService {
@Override
public void getMsg(String msg) {
System.out.println(msg);
}
}

4. 修改配置文件

5. 运行代码

public class Demo {
public static void main(String[] args) {
//获取spring配置文件生成的对象
ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
//通过bean的id,获取bean对象
UserServiceImpl userService = (UserServiceImpl)ac.getBean("userService");
//使用方法
userService.getMsg("Hello,Spring!");
}
}

运行结果:

6. 解析Spring运行原理

控制反转IOC:

7. Spring容器中管理的bean对象:单态VS原型

7.1 单态模式 singleton(单例模式)(默认)

public class Demo {
public static void main(String[] args) {
//获取spring配置文件生成的对象
ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
//通过bean的id,获取bean对象
UserServiceImpl userService = (UserServiceImpl)ac.getBean("userService");
//比较连个对象的哈希值
System.out.println(userService.hashCode());
System.out.println("--------------------");
UserServiceImpl userService2 = (UserServiceImpl)ac.getBean("userService");
System.out.println(userService2.hashCode());
}
}

运行结果:

7.2 原型模式 prototype

在配置文件中对应的<bean>标签中添加 scope=prototype 属性

<bean id="userService" class="com.yd.service.impl.UserServiceImpl" scope="prototype"></bean>

运行7.1中的代码结果:

总结:

  • 当<bean>中加入scope="prototype",表示该对象使用原型模式
  • 当<bean>中加入scope="singleton",或不加该属性,表示该对象使用单态模式(单例模式)
  • 原型模式:每次获取的对象不是同一个对象
  • 单态(单例)模式:每次获取的对象是同一个对象

01-第一个Spring程序的更多相关文章

  1. 2、Spring的 IoC详解(第一个Spring程序)

    Spring是为了解决企业应用开发的复杂性而创建的一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架.在这句话中重点有两个,一个是IoC,另一个是AOP.今天我们讲第一个IoC. IoC概念 ...

  2. 【Spring学习笔记-2】Myeclipse下第一个Spring程序-通过ClassPathXmlApplicationContext加载配置文件

    *.hl_mark_KMSmartTagPinkImg{background-color:#ffaaff;}*.hl_mark_KMSmartTagBlueImg{background-color:# ...

  3. spring之第一个spring程序

    spring具体描述: 轻量级 IOC:依赖注入 AOP:面向切片编程 容器:spring是一个容器,包含并且管理应用的生命周期 框架 一站式 一.搭建spring开发环境 在eclipse中新建一个 ...

  4. Spring-02 第一个Spring程序

    Spring-02 第一个Spring程序 第一个Spring程序 1.导入依赖 <dependency> <groupId>org.springframework</g ...

  5. 第一个Spring程序HelloWorld

    对于初学者而言,任何理论化的讲解都比不上一个简单的HelloWorld,我们在学习Spring时也不外乎用最简单的HelloWorld程序来将这个灵活而又强大的轻量级框架推送到诸位面前.想要说明的是现 ...

  6. 我的第一个Spring程序

    1.程序结构 2.各个文件 ByeService.java package com.service; public class ByeService { private String name; pu ...

  7. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:第一个Spring程序

    1. 创建项目 在 MyEclipse 中创建 Web 项目 springDemo01,将 Spring 框架所需的 JAR 包复制到项目的 lib 目录中,并将添加到类路径下,添加后的项目如图 2. ...

  8. Spring学习之路三——第一个Spring程序(体会IoC)

    体会IoC:Spring通过一种称作控制反转(IoC)的技术促进了松耦合.当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象.你可以认为IoC与JN ...

  9. 【VBA编程】01.第一个VBA程序Hello world

    [程序1] 所有程序语言的开始都源于Hello world,那么我们也使用Hello world进行第一个VBA编程 新建Excle文件-----文件-------选项-----自定义功能区域---- ...

  10. 第一个Spring程序(DI的实现)

    一,依赖注入:Dependency Injection(DI)与控制反转(IoC),不同角度但是同一个概念.首先我们理解一点在传统方式中我们使用new的方式来创建一个对象,这会造成对象与被实例化的对象 ...

随机推荐

  1. Path类,文件操作的路径用法

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

  2. ABAP 选择屏幕内的组件以及使用

    选择屏幕组件 主要记录了ABAP编程中选择屏幕常用的组件 选择框 范围选择框 radio单选 check选择 单行展现 配合radio和check使用较多 下拉框 自定义下拉框 按钮 文件框 文字帮助 ...

  3. antd DatePicker限制日期的选择

    import React from 'react'; import ReactDOM from 'react-dom'; import {Input,DatePicker,Form,Col,Butto ...

  4. maven工程运行环境修改 maven的java工程取mysql数据库数据

    maven工程运行环境修改  <plugins> <plugin> <!-- https://mvnrepository.com/artifact/org.apache. ...

  5. linux篇之WC(word count)的使用概述

    Text. Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式: wc [选项] [文件1] [文件2] ... 2.命 ...

  6. 解决动态class展示问题

    由于部分涉及到隐私,就打马赛克了 比如这个小问题,我有这个动态的class,里面是十几个类似btn的按钮,然后每个btn下面又有子多选框,一开始是我点击那个下面的子级他的父级就被选中,默认选中第一个父 ...

  7. 数据结构(C语言)_链表

    //单链表按序号查找节点的值 LNode* GetElem(LinkList L, int i) { int j = 1; LNode* p = L->next; if (i == 0) ret ...

  8. Luogu P2375 [NOI2014 D2]动物园 kmp

    P2375 动物园 题目描述 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物 ...

  9. 新centos6 静态ip 放行端口 hosts主机名 jdk环境变量

    0 jdk 环境变量 vi  /etc/profile source /etc/profile 刷新环境变量 在尾部增加如下代码: #JDK全局环境变量配置export JAVA_HOME=/usr/ ...

  10. Dapper修改

    <table class="table table-bordered"> <tr> <td>商品名称:</td> <td> ...