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. 类Class

    C# 类(Class) 当你定义一个类时,你定义了一个数据类型的蓝图.这实际上并没有定义任何的数据,但它定义了类的名称意味着什么,也就是说,类的对象由什么组成及在这个对象上可执行什么操作.对象是类的实 ...

  2. 1.1 WCF SOA架构和webservice

    1.什么是SOA? SOA全称:面向服务架构(service Oriented Architecture),它是一种组件架构模式. 一.定义 1.WebService:严格来说是行业标准,不是技术,使 ...

  3. 用find和xargs处理文件名中带空格的文件

    我们经常用find和xargs来进行批处理文件. 常见的用法如:find ./ -name ".jpg" | xargs cp -t ./JPEGImages ,实现将当前目前下所 ...

  4. python下载.msg文件的附件

    .msg文件,outlook邮件的一种保存方式 方式一:使用win32com库,不过要安装outlook才行 import win32com.client import os def get_atta ...

  5. 杭电oj 数值统计

    Problem Description 统计给定的n个数中,负数.零和正数的个数.   Input 输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然 ...

  6. gash 支付方式

    首先客服人员会提供相应的支付demo代码,可根据此来处理 值得说的是 每次支付成功后 他会主动给你在后台设置的回调地址发送信息  你也要相应的返回对应的信息  发送过来的密文 有时会解密失败 可根据他 ...

  7. 061_Apex 异常捕捉

    Trigger 中的错误处理 在 Trigger 中,我们可以为进行操作的数据进行验证,类似于验证规则.如果遇到不符合条件的数据,可以通过 addError() 函数来将错误显示给用户,并记录日志. ...

  8. 问题:PHP扩展功能,去掉分号';'没有用,是怎么回事?(已解决)

    1. 环境:win10的操作系统,IIS的服务器. 2. 问题描述:PHP要开启访问MYSQL的模块mysqli,我打开配置文件,去掉相关扩展模块前面的分号';',然后重启服务器,但是无效 ~~ 3. ...

  9. linux 中的errno 和 strerror(errno)

    1. errno.h 中包含 errno 这个错误保存值 string.h 包含 strerror() 函数 ,它的原型 是 char *strerror(int errnum); 输入值应该是err ...

  10. python实现学生信息管理系统——界面版

    前言(写于2022年5月17日) 这篇博客是我两年前大二时写的,一直放在草稿箱里,还没写完,现在快毕业了,突然翻出来了.虽然博客没写完,但早就写好了代码,可运行的exe文件以及文档.现在上传到gite ...