01-第一个Spring程序
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程序的更多相关文章
- 2、Spring的 IoC详解(第一个Spring程序)
Spring是为了解决企业应用开发的复杂性而创建的一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架.在这句话中重点有两个,一个是IoC,另一个是AOP.今天我们讲第一个IoC. IoC概念 ...
- 【Spring学习笔记-2】Myeclipse下第一个Spring程序-通过ClassPathXmlApplicationContext加载配置文件
*.hl_mark_KMSmartTagPinkImg{background-color:#ffaaff;}*.hl_mark_KMSmartTagBlueImg{background-color:# ...
- spring之第一个spring程序
spring具体描述: 轻量级 IOC:依赖注入 AOP:面向切片编程 容器:spring是一个容器,包含并且管理应用的生命周期 框架 一站式 一.搭建spring开发环境 在eclipse中新建一个 ...
- Spring-02 第一个Spring程序
Spring-02 第一个Spring程序 第一个Spring程序 1.导入依赖 <dependency> <groupId>org.springframework</g ...
- 第一个Spring程序HelloWorld
对于初学者而言,任何理论化的讲解都比不上一个简单的HelloWorld,我们在学习Spring时也不外乎用最简单的HelloWorld程序来将这个灵活而又强大的轻量级框架推送到诸位面前.想要说明的是现 ...
- 我的第一个Spring程序
1.程序结构 2.各个文件 ByeService.java package com.service; public class ByeService { private String name; pu ...
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:第一个Spring程序
1. 创建项目 在 MyEclipse 中创建 Web 项目 springDemo01,将 Spring 框架所需的 JAR 包复制到项目的 lib 目录中,并将添加到类路径下,添加后的项目如图 2. ...
- Spring学习之路三——第一个Spring程序(体会IoC)
体会IoC:Spring通过一种称作控制反转(IoC)的技术促进了松耦合.当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象.你可以认为IoC与JN ...
- 【VBA编程】01.第一个VBA程序Hello world
[程序1] 所有程序语言的开始都源于Hello world,那么我们也使用Hello world进行第一个VBA编程 新建Excle文件-----文件-------选项-----自定义功能区域---- ...
- 第一个Spring程序(DI的实现)
一,依赖注入:Dependency Injection(DI)与控制反转(IoC),不同角度但是同一个概念.首先我们理解一点在传统方式中我们使用new的方式来创建一个对象,这会造成对象与被实例化的对象 ...
随机推荐
- Word06 黑客技术office真题
1.课程的讲解之前,先来对题目进行分析,首先需要在考生文件夹下,将Wrod素材.docx文件另存为Word.docx,后续操作均基于此文件,否则不得分. 2.这一步非常的简单,打开下载素材文件,在[文 ...
- mysql两表关联
mysql两表关联 是按照范围关联表 select * from ((select u.id,u.name,u.sex,s.street_name,u.street_code,u.birthday f ...
- 在element plus中使用checkbox 多选框实现大区省市区选择回选
1.产品拿来淘宝后台页面,希望我们的快递发货也用这一套 长这样: 2.后端说提供的数据是树形结构,大区id不要传,传省的id,勾选哪个传哪个 3.element ui的树形插件和级联选择器在数据上是 ...
- setState 更新
同步逻辑中,setState异步更新,同步更新会合并为一次更新 异步逻辑中,setState同步更新 this.setState({ data:data,()=>{ } }) 在回调函数里面了解 ...
- 解决ubuntu pycharm 中文输入法问题
参考连接:https://blog.csdn.net/frighting_ing/article/details/122725205
- Delphi中var和out
var: 传递的是参数的地址 out: 以返回值的形式返回结果,类似函数的效果:可以实现一个函数返回多个值
- 第一次写代码(Hellowold)
Helloword 新建一个code文件夹,存放代码 新建一个hava文件 文件后缀名为java 编写代码 java 1. public class Hello{ public static ...
- js 获取指定天数前日期
getBeforeDate(n) {//传入天数 var n = n; var d = new Date(); var year = d.getFullYear(); var mon = d.getM ...
- Ubuntu系统运行Steam中VR游戏的相关软件环境配置说明
ubuntu下的SteamVR(HTCVive)设置教程 贴吧链接 https://tieba.baidu.com/p/5333529880 运行SteamVR出现的一些问题解决方案参考链接 ...
- 1903021126 申文骏 Java 第三周作业 编写代码及运行
项目 内容 课程班级博客链接 19级信计班(本) 作业要求链接 第三周作业要求 博客名称 1903021126 申文骏 Java 第三周作业 编写代码及运行 要求 每道题要有题目,代码(使用插入代码, ...