Spring,搭建Spring环境
控制反转:控制了对象的创建,反转:反转的是获取对象的方式,从自己创建对象变为由Spring工厂推送
1. 搭建Spring环境,导入依赖
- spring-aop:开发AOP特性时需要的JAR
- spring-beans:处理Bean的jar
- spring-context:处理spring上下文的jar
- spring-core.jar:spring核心jar
- spring-expression:spring表达式
还要导入:
- mysql-connection-java
- druid
- mybatis
- mybatis-spring
- log4j
2. application-Context.xml配置文件
先导入模板
<?xml version="1.0" encoding="utf8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/phttp://www.springframework.org/schema/p/spring-p.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd "
></beans>
3. 详解Spring原理
新建Student类
public class Student {private Integer stuno;private String stuname;private Integer stuage;public Integer getStuno() {return stuno;}public void setStuno(Integer stuno) {this.stuno = stuno;}public String getStuname() {return stuname;}public void setStuname(String stuname) {this.stuname = stuname == null ? null : stuname.trim();}public Integer getStuage() {return stuage;}public void setStuage(Integer stuage) {this.stuage = stuage;}@Overridepublic String toString() {return "Student{" +"stuno=" + stuno +", stuname='" + stuname + '\'' +", stuage=" + stuage +'}';}}
写个测试类test.java
来看以前的做法:先新建对象,在通过set()属性赋值
再来用IOC方法
1. 在application-context.xml文件中写bean,通过property标签设置属性
2. 回到test测试类
现在怎么创建student对象?
第一步:获取Spring上下文对象context
第二步:通过 context.getBean()获取刚刚在Spring配置文件application-context.xml文件中的bean(id="Student")
对象的创建和对象的赋值全部交给IOC容器
下面的代码,执行从springIOC容器中获取一个id为student的bean对象,该对象的类型为对应bean标签class的值
Student student = (Student)context.getBean("student");
理解工厂的概念:
创建一个ICourse接口:课程
public interface ICourse {public void learn();
}
不同课程例如JavaCourse、MybatisCourse实现这个接口
public class JavaCourse implements ICourse {@Overridepublic void learn() {System.out.println("learning Java...");}
}
public class MybatisCourse implements ICourse {@Overridepublic void learn() {System.out.println("learning Mybatis...");}
}
学生可以学习课程:为Student类添加方法 learnJava()、learnMybatis()
public void learnJava(){ICourse iCourse = new JavaCourse();iCourse.learn();}public void learnMybatis(){ICourse iCourse = new MybatisCourse();iCourse.learn();}
测试一下:
上面是我们原始的开发方式
每次需要课程都要在Student类里面写一个learnXxx(),
如果要学习20个课程,就要20个方法,且每个方法里面都要创建一个课程的实现类对象
这种方式创建对象new非常零散,造成后期维护较为麻烦
创建工厂,由工厂统一的创建对象
根据名称创建课程对象
public class CourseFactory {public static ICourse getCourse(String name){if(name.equalsIgnoreCase("java")){return new JavaCourse();}else {return new MybatisCourse();}}
}
把Student中的learnJava()、learnMybatis()方法统一写在learn方法中,并给形参String name,并把name交给工厂CourseFactory来创建对象
测试:
现在要学习不同课程只需要改参数值就可以了,通过简单的工厂,可以将创建课程new 集中起来操作,方便后期维护
所以SpringIOC容器就是一个工厂,不需要我们去写CourseFactory,由SpringIOC容器为我们创建
我们只需要通过调用
为了更方便理解控制反转,我们也可以把这种方式叫做依赖注入
在spring配置文件中把Course的两个实现类设置bean
如下代码:在需要创建JavaCourse对象的地方通过spring上下文context调用getBean()方法拿对象,不需要自己创建
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class CourseFactory {public static ICourse getCourse(String name) {ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");if (name.equalsIgnoreCase("java")) {return (ICourse) context.getBean("javaCourse");} else {return (ICourse) context.getBean("mybatisCourse");}}
}
对比之前自己new对象
public class CourseFactory {public static ICourse getCourse(String name){if(name.equalsIgnoreCase("java")){return new JavaCourse();}else {return new MybatisCourse();}}
}
Spring,搭建Spring环境相关推荐
- 手把手教你安装Spring+搭建Spring开发环境
为了让新手安装Spring时少走弯路,小编写下详细步骤(以win8,64位为例). 请系好安全带,坐好扶稳. 一:安装eclipse 如果已经安装请忽略此步. 官网下载地址(64位):https:// ...
- 利用Maven搭建Spring开发环境 【转】
2019独角兽企业重金招聘Python工程师标准>>> 一. 概要说明 最近几天在测试Spring3.0的AOP功能,在测试功能之前,首先是要搭建出Spring3.0的开发功能. ...
- java mvc 小程序_[Java教程]Spring MVC 的环境搭建和入门小程序
[Java教程]Spring MVC 的环境搭建和入门小程序 0 2017-02-17 00:00:16 1.1.下载spring框架包. 1.1.1百度搜索Spring Framework. 进入s ...
- effective java英文版pdf_Java之Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse...
框架学习前言 这个模块是面向Spring的,Spring的学习我是这么想的: 1.简单介绍Spring,主要是从网上借鉴一些重点 2.尽量说明清楚Spring的使用方法以及细节点 3.尽量以自己的理解 ...
- irule jar包无法导入_Java之Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse...
框架学习前言 这个模块是面向Spring的,Spring的学习我是这么想的: 1.简单介绍Spring,主要是从网上借鉴一些重点 2.尽量说明清楚Spring的使用方法以及细节点 3.尽量以自己的理解 ...
- 搭建spring boot环境并测试一个controller
Idea搭建spring boot环境 一.新建项目 二.起步依赖 三.编写SpringBoot引导类 四.编写Controller 五.热部署 一.新建项目 1.新建project 2.选择Spri ...
- 搭建Spring MVC 4开发环境八步走
Spring MVC作为SpringFrameWork的产品,自诞生之日,就受到广泛开发者的关注,如今Spring MVC在Java中的发展可谓是蒸蒸日上,如今如果再有开发者说,不了解Spring M ...
- 基于mysql搭建框架环境搭建_Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架环境
项目建设完成之后的结构: 数据库的表结构如下: 环境建设:搭建Maven环境.Tomcat环境.需要MySql 数据库支持,使用的编程工具Eclipse (这些是前期准备): 开始创建工程: 1.创建 ...
- 搭建Spring开发环境并编写第一个Spring小程序
一.前面,我写了一篇Spring框架的基础知识文章,里面没讲到如何配置Spring开发环境,今天就来讲一下,如果大家不知道怎么下载Spring软件包的话,可以看我那篇文章: http://blog.c ...
- 从零搭建一个 Spring Boot 开发环境!Spring Boot+Mybatis+Swagger2 环境搭建
从零搭建一个 Spring Boot 开发环境!Spring Boot+Mybatis+Swagger2 环境搭建 本文简介 为什么使用Spring Boot 搭建怎样一个环境 开发环境 导入快速启动 ...
最新文章
- android 释放so,在安卓项目里部署so文件你需要知道的知识
- redis中的intset
- 免费下载来自阿里巴巴 双11 的《云原生大规模应用落地指南》
- JLINK与JTAG的区别
- nodejs express
- 从0到1带你手撸一个请求重试组件,不信你学不会!
- win7 OEM设置工具
- 客户端压测server端计算qps以及不同延迟时间下响应数量所占百分比
- activiti流程消息事件触发messageEventReceived,MessageCatchingEvent 及消息启动流程
- Julia: 奇技淫巧......
- Kotlin习惯用语和编码风格[转自Kotlin中文文档]
- SSM项目实战之十:用户信息查询
- JS对象定义和基本方法
- 走进MyBatis源码一探Spring扩展点「知识点多多」「扩展点实战系列」- 第449篇
- EXECUTE IMMEDIATE用法小结
- 【万字长文】2022年最全的搭建Web自动化测试框架教程
- RTL8723BU BTwifi
- java对接阿里云短信平台
- CentOS下连VisualSVN服务器时报SSL handshake failed: SSL error: Key usage violation in certificate has been d
- 人工智能AI系列 - 人脸识别套件列表,包括人脸检测,人脸识别,人脸关键点,人脸比对,人脸搜索等等。
热门文章
- v割与邮票孔_PCB中邮票孔(半孔)与V-cut原理分析与设计
- 健身教练学习书籍推荐-结合知乎
- 名创优品营收增速再下降:年收入和豪言还差900亿,高瓴抄底失败
- 安全基础--23--应急响应(上)
- excel转换成PDF的软件
- 计算机画画作品 人物 游泳,幼儿人物画图片游泳的人
- 【论文翻译】HCL2000—A Handwritten Chinese Character Database
- 生活随记 - 立冬 暖阳高照
- 搜狗输入法语音转文字体验报告
- 《UnityAPI.Input输入》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Input+anyKey+gyro+GetAxis+GetKey+立钻哥哥++OK++)