草庐IT

ssm第一天学习

suiyiliuxin-629728 2023-04-18 原文

SSM

· IOC

·AOP

初识Spring :

Spring全家桶

Spring Framework 底层框架,设计性框架

Spring Boot 加速开发,提高开发速度

Spring Cloud 分布式开发

 

Spring Framework系统架构

Spring Framework是Spring生态圈最基础的项目

· Core Container:核心容器

· Aspects: A OP思想实现

· AOP: 面向切面编程

· Data Access: 数据访问

· Data Integration: 数据集成

· Web: Web开发

· Test: 单元测试与集成测试

 

image-20221007181948836

 

核心概念: IoC/DI,IoC容器,Bean

 

目标: 充分解耦

· IoC:(Inversion of Control)控制反转

解决耦合度偏高的问题,不再主动new产生对象,转为由外部提供对象

 

· Spring技术对IoC思想进行实现

· Spring提供一个容器,IoC容器来充当“外部” == Core Container

· IoC容器负责对象的创建,初始化等 被创建或者管理的对象在IoC中统称为Bean

 

· DI(Dependency Injection)依赖注入

· 在容器中建立bean和bean之间的依赖关系的整个过程,为依赖注入

 

最终效果:使用对象时不仅可以直接从IoC容器中获取,并且获取到的bean已经绑定了所有的依赖关系

 

入门案例

定义在Spring管理的类(接口)

public interface BookDao {
   public void save();
}
public class BookDaoImpl implements BookDao {
   public void save(){
       System.out.println("book dao");
  }
}

 

建立maven依赖 ==== Spring环境

<dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-context</artifactId>
     <version>5.2.10.RELEASE</version>
   </dependency>

 

在Spring配置xml文件中配置bean

<!--    2.配置bean-->
   <bean id="bookDao" class="com.liuxin.dao.impl.BookDaoImpl"/>

calss配实现类,需要用它创建对象

id配一个名字

注意:bean定义时id属性在同一个上下文不能重复

 

在主方法中运行

 public static void main(String[] args) {
       //3.获取IoC容器
       ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");// 这里参数为配置的spring的xml文件名
       //4.获取bean
       BookDao bookDao = (BookDao) ctx.getBean("bookDao");
       //5.调用bean对象方法
       bookDao.save();
  }

 

运行报错:不支持发行版本5

解决办法:设置 =》构建,执行,部署 =》java编译器 =》将目标字节码版本改为9

image-20221007203454134

 

DI入门案例

-----基于上一个案例

 

public class BookServiceImpl implements BookService {
   //删除业务层中使用new方法创建的dao对象
   //private BookDao bookDao=new BookDaoImpl();

   private BookDao bookDao;

   public void save(){
       System.out.println("book service");
       bookDao.save();
  }

   //提供对应的set方法
   public void setBookDao(BookDao bookDao) {
       this.bookDao = bookDao;
  }
}

 

配置service和dao的关系

<!--    2.配置bean-->
   <bean id="bookDao1" class="com.liuxin.dao.impl.BookDaoImpl"/>

   <bean id="bookService" class="com.liuxin.service.impl.BookServiceImpl">
<!--   7.置service和dao的关系-->
       <property name="bookDao" ref="bookDao1"/>
   </bean>

property标签表示配置当前bean的属性

name属性表示配置哪一个具体的属性 -----配实例的变量名

ref属性表示参照哪一个bean ------配id

 

bean配置

基本配置

image-20221007225937796

别名配置

image-20221007231749991

// id和name地位相同

bean作用范围配置

image-20221007232517407

bean实例化

1.构造方法

调用的是无参构造方法

如果无参构造方法不存在,将抛出异常BeanCreationException

有关ssm第一天学习的更多相关文章

  1. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  2. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  3. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  4. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  5. ruby - 我正在学习编程并选择了 Ruby。我应该升级到 Ruby 1.9 吗? - 2

    我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or

  6. ruby-on-rails - CarrierWave - PDF - 只选择第一页 - 2

    我的Rails应用程序中安装了carrierwave。但是,当用户上传多页pdf时,我只希望应用程序获取文档中的第一页并将其转换为jpeg。这可能吗?用什么命令?这是我的uploader。#encoding:utf-8classImageUploader[200,300]##defscale(width,height)##dosomething#end#Createdifferentversionsofyouruploadedfiles:version:thumbdoprocess:resize_to_fill=>[150,210]process:convert=>:jpgdefful

  7. ruby - 如何跳过 CSV 文件的第一行并将第二行作为标题 - 2

    有没有办法跳过CSV文件的第一行,让第二行作为标题?我有一个CSV文件,第一行是日期,第二行是标题,所以我需要能够在遍历它时跳过第一行。我尝试使用slice但它会将CSV转换为数组,我真的很想将其读取为CSV,以便我可以利用header。 最佳答案 根据您的数据,您可以使用另一种方法和skip_lines-option此示例跳过所有以#开头的行require'csv'CSV.parse(DATA.read,:col_sep=>';',:headers=>true,:skip_lines=>/^#/#Markcomments!)do|

  8. ruby - 我如何学习 ruby​​ 的正则表达式? - 2

    如何学习ruby​​的正则表达式?(对于假人) 最佳答案 http://www.rubular.com/在Ruby中使用正则表达式时是一个很棒的工具,因为它可以立即将结果可视化。 关于ruby-我如何学习ruby​​的正则表达式?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1881231/

  9. arrays - 在一行中选择数组的第一个和最后一个元素 - 2

    我的任务是从数组中选择最高和最低的数字。我想我很清楚我想做什么,但只是努力以正确的格式访问信息以满足通过标准。defhigh_and_low(numbers)array=numbers.split("").map!{|x|x.to_i}array.sort!{|a,b|ba}putsarray[0,-1]end数字可能看起来像"80917234100",要通过,我需要输出"9234"。我正在尝试putsarray.first.last,但一直无法弄明白。 最佳答案 有Array#minmax完全满足您需要的方法:array=[80,

  10. ruby-on-rails - Ruby 或 Rails 有只将第一个字符大写的方法吗? - 2

    或者好像我必须自己写方法?(保持DHA不变):ruby-1.9.2-p180:001>s='omega-3(DHA)'=>"omega-3(DHA)"ruby-1.9.2-p180:002>s.capitalize=>"Omega-3(dha)"ruby-1.9.2-p180:003>s.titleize=>"Omega3(Dha)"ruby-1.9.2-p180:005>s[0].upcase+s[1..-1]=>"Omega-3(DHA)" 最佳答案 如果我的回答只是垃圾,我深表歉意(我不做ruby)。但我相信我已经为您找到了答

随机推荐