对spring的初步认识

Spring For Android初步 Spring For Android初步Spring for Android 支持在Android环境下使用Spring框架,其意在简化Android本地开发。这包括能够在你的Android应用程序的Rest客户端使用RestTemplate。除了本次主要讲解的网络请求部分,Spring for Android还提供了基于OAuth支持将Spring Social的功能集成到Android应用程序... 阅读详情
spring是一个分层的javaEE一站轻量级开源框架,spring是处理三层架构中的service层的,那么spring和传统的service层有什么区别呢?
我们来看一下在使用spring之前的一段代码。

public class UserServiceImpl implement UserService{
     UserDao userDao=new UserDaoImpl();//控制反转
     public void addUser(){
          userDao.addUser();
          }
}

相信这一段代码大家都很熟悉,这就是传统的service层写法,我们在写的时候都会先写一个service接口然后写一个实现类去实现这个接口,这样写的优点是什么?你可能会说是为了有更好的扩展性,方便解耦。那么问题来了,这样写真的有解耦吗?
public class UserServiceImpl implement UserService{
     UserDao userDao=new UserDaoImpl();//直接在service层实例化dao,service和dao耦合
     public void addUser(){
          userDao.addUser();
          }
}

我们可以使用依赖注入思想实现service和dao解耦
public class UserServiceImpl implement UserService{
     UserDao userDao;
     public void setUserDao(UserDao userDao){
     this.userDao=userDao;
     
}
     public void addUser(){
          userDao.addUser();
          }
}
这样就实现了service和dao的解耦
在我们之前使用service时都是这样的:
UserService service=new UserServiceImp();
在使用spring之后完全就不要使用new来实例化service
Spring的核心思想:控制反转和依赖注入
上面的代码就是控制反转和依赖注入的具体表现,下面我们来看看spring是如何实现一面这一过程的


1.导包


2.创建service


public class UserServiceImpl implements UserService {
private UserDao userDao ;
public void setUserDao(UserDao userDao) {
    this. userDao = userDao;
}

@Override
public void addUser(User user) {
    // TODO Auto-generated method stub
    this. userDao.addUser( user);
}

}


3.创建dao

public class UserDaoImpl implements UserDao{

    @Override
    public void addUser(User user ) {
         // TODO Auto-generated method stub
        System. out.println("添加用户" );
    }

}

4.创建beans.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
                           http://www.springframework.org/schema/beans/spring-beans.xsd">
                           <!-- 创建 dao实现类 -->
    <bean id="userDaoId" class="com.wency.dao.UserDaoImpl" ></bean>
     <!-- 创建service -->
    <bean id="userService" class="com.wency.a_ioc.UserServiceImpl" >
         <property name= "userDao" ref="userDaoId" ></property>
    </bean >
                          
</beans>

5.测试类
public class TestUserService {
    @Test
    public void testAddUser(){
         //beans.xml的路径
        String configPath="com/wency/a_ioc/Beans.xml" ;
         //方法一:使用BeanFactory实现延迟加载beans.xml,userService在第一次调用getBean时才实例化
        BeanFactory factory= new XmlBeanFactory(new ClassPathResource(configPath ));
         //方法二:使用ApplicationContext加载beans.xml
//      ApplicationContext applicationContext=new ClassPathXmlApplicationContext(configPath);
//      UserService userService = (UserService) applicationContext.getBean("userService");
        UserService service=(UserService) factory.getBean("userService" );
        User user= new User();
         user. setName("张三");
         service.addUser( user);
    }
}


在bean.xml中其实是实现了以下的几个步骤
// <bean id= "userService" class ="com.wency.a_ioc.UserServiceImpl" >
UserService userService=new UserServiceImpl();
// <bean id= "userDaoId" class ="com.wency.dao.UserDaoImpl" ></ bean>
UserDao userDaoId=new UserDaoImpl();
/**  < property name= "userDao" ref ="userDaoId" ></ property>
name的值要和userService中的userDao属性名相同,ref即引用的对象的id
**/
userService.setUserDao(userDaoId);


spring的核心api


BeanFactory :这是一个工厂,用于生成任意bean。
        采取延迟加载,第一次 getBean时才会初始化Bean
ApplicationContext:是BeanFactory的子接口,功能更强大。(国际化处理、事件传递、Bean自动装配、各种不同应用层的Context实现)。当配置文件被加载,就进行对象实例化。
        ClassPathXmlApplicationContext 用于加载classpath (类路径、 src)下的xml
               加载xml运行时位置 --> /WEB-INF/classes/...xml
        FileSystemXmlApplicationContext 用于加载指定盘符下的 xml
               加载xml运行时位置 --> /WEB-INF/...xml
                      通过java web ServletContext.getRealPath() 获得具体盘符



ABAQUS中CDP模型在钢筋混凝土节点低周反复荷载模拟的关键技术解析 本文深入解析了ABAQUS中CDP模型在钢筋混凝土节点低周反复荷载模拟中的关键技术。通过详细介绍CDP模型的核心价值、建模关键技术、滞回曲线优化方法及典型问题排查指南,帮助工程师精准模拟混凝土的拉伸开裂和压缩压碎行为,提升抗震分析效率。文章还提供了实用的工程应用技巧,如快速建模模板和后处理自动化脚本。 阅读详情

相关推荐

Unreal 5 MetaHuman插件全流程:从安装到角色动画生成

本文详细介绍了Unreal 5中MetaHuman插件的全流程使用指南,从安装配置到角色动画生成。通过Quixel Bridge下载预设角色,利用面部捕捉技术赋予数字人模型生命力,并提供材质编辑、性能优化等进阶技巧,帮助用户快速创建照片级真实的虚拟角色。

weixin_29009081的博客 829

Spring学习(1)——快速入门

Spring学习(1)——快速入门 认识 Spring 框架 Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (Inversion of Control,控制反转) 和 AOP(Aspect Oriented Programming,面向切面编程)。 什么是 Spring: Spring 是一个轻量级的 DI / IoC 和 AOP 容器的...

qq_42556903的博客 951

DEM数据下载,拼接,裁剪

目录: 1、数字高程模型(DEM)的数据下载 2、在ENVI里面进行拼接,生成SARscape标准格式的DEM数据3、在ArcGIS里面安装已有的矢量范文,进行掩膜裁剪 4、注意事项 数字高程模型的数据下载: 网址:http://dwtkns.com/srtm30m/ 1.对研究区域进行经纬度选择,然后进行选择下载即可 2.下载的数据是.hgt格式的,按照不同的需求进行转换,这里我是用于ENVI处理,且下载了四个,所有进行了拼接,拼接、格式转换如下 注:可能有时候需要登陆注册,点击下...

weixin_40874151的博客 2万+

Spring插件的安装、初步使用

1、Spring 的离线安装: 2、Spring的在线安装: 注意:后面的操作跟离线操作的基本相似 3、在eclipse怎么删除插件: 4、在eclipse初步使用Spring 插件: ...

sn_cmf16的博客 1109

robomimic实验复现全流程:从数据集下载到训练视频生成

本文详细介绍了机器人模仿学习项目RoboMimic的完整实验复现流程。内容涵盖从使用Conda创建Python 3.8隔离环境、安装RoboSuite仿真器和MuJoCo物理引擎,到下载并探索数据集、配置与启动模型训练,最后进行模型评估和生成策略执行视频。该指南旨在帮助研究者和开发者高效搭建实战环境,规避常见问题,快速验证算法或应用于实际场景。

weixin_29089057的博客 518

【漏洞修复】Diffie-Hellman Key Agreement Protocol 资源管理错误漏洞(CVE-2002-20001)

Diffie-Hellman Key Agreement Protocol 存在安全漏洞,远程攻击者可以发送实际上不是公钥的任意数字,并触发服务器端DHE模幂计算。

我的博客 1万+

Spring的初步介绍与学习

Spring的初步介绍与学习前言Spring的初步学习1、Spring的概念2、学习Spring的好处Spring项目的搭建1、在项目中加入一个插件就这2、配置pom.xml文件总结 前言 Spring的初步学习 1、Spring的概念 2、学习Spring的好处 Spring项目的搭建 1、在项目中加入一个插件 为了方便插件的使用,这里博主将自己的eclipse版本进行了升级! Help----》About Eclipse 看到这个页面后,点击Installation Details这个按钮 选中 E

月亮投递员的博客 174

基于FPGA的多级CIC滤波器实现四倍插值

基于FPGA的多级CIC滤波器实现四倍插值 原文链接:基于FPGA的多级CIC滤波器实现四倍插值 在《基于FPGA的多级CIC滤波器实现四倍抽取一》和《基于FPGA的多级CIC滤波器实现四倍抽取二》中我们先来了解滑动平均滤波器、微分器、积分器以及梳状滤波器原理以及它们的幅频响应。此篇我们将用verilog实现基于FPGA的多级CIC滤波器实现四倍插值。 1 CIC滤波器的基本概述 CIC(积分梳状...

baidu_34971492的博客 3142

spring aop初步了解

- Spring AOP “初步了解和使用SPRING AOP” 一、AOP 1.1 什么是AOP AOP(Aspect Orient Programming),面向切面编程。AOP是一种编程思想,是对面向对象编程(OOP)的一种补充。 1.2 AOP实现分类 AOP的本质是由AOP框架修改业务组件的字节码,是代理模式的一种应用。按照修改的字节码的时机可以分为两类: 静态AOP: AOP框架在编译阶段进行修改,生成了静态的AOP代理类(生成的.class文件已经被改动),比如AspecJ框架。 .

CarrotZsy的博客 219

Vue2 - 最新详细实现网站内部打开预览 office 全套附件,在页面弹窗内解析预览 word文档、excel电子表格、ppt演示文稿(docx|xlsx|pptx|pdf|txt等文件)详细代码

vue2,nuxt2,office,文档,文件,查看预览,弹框预览,下载预览,如何预览pdf文档,打开查看,office全套文档,实现在线预览文件,小程序内预览word文件,手机h5移动端网页,nuxt文档在线预览,预览office最好用的插件,下载查看,Office在线预览,vue-office,vue如何使用vue-office教程示例,word文档,ppt,exce表格,预览电子文件,文档无法解析,打不开,报错,失效,保存下载,vue前端预览并下载doc、xls、pdf、txt及图片,vue2中预览p

🏆 前端领域优质创作者 1万+

机器学习与深度学习基础概念

本篇主要介绍机器学习主要概念,包括不限于标签、特征、样本、训练、模型、回归模型、分类模型、泛化、过拟合、预测、平稳性、训练集、验证集、测试集。

专注大数据与人工智能技术分享,欢迎私信加群互相学习! 3万+

Spring的初步使用

需要导入的包: commons-logging-1.1.1.jar spring-aop-4.0.0.RELEASE.jar spring-beans-4.0.0.RELEASE.jar spring-context-4.0.0.RELEASE.jar spring-core-4.0.0.RELEASE.jar spring-expression-4.0.0.RELEASE.jar 一、B...

Blog 126

小众但实用:Python爬取钉钉/企业微信消息,实现办公数据自动化采集(完整版)

钉钉/企业微信的办公数据自动化采集,属于「小众但极度实用」的Python技巧——它不像爬虫爬取电商/网页数据那样被广泛关注,但能直接解决职场人的「刚需痛点」,把每天1-2小时的手动数据整理工作,变成「一键自动化完成」。这套技巧的核心价值,不在于「技术有多高深」,而在于「能真正落地、能真正提升效率」—— 几行简单的Python代码,就能解放双手,让你从繁琐的重复工作中解脱出来,专注于更有价值的核心工作。更重要的是:所有的技术和代码,都是基于「合规合法」的前提,守住了技术的底线,也守住了职场的原则。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1931

Spring初步理解

文章目录Spring1、简介1、优点2、总结3、组成2、IOC3、HelloSpringIOC创建对象方式4、Spring配置1、别名2、Bean的配置3、import5、视图解析器数据显示到前端6、过滤器解决乱码 Spring SSM:SpringMvc+Spring+Mybatis <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <g

tototototoo的博客 577

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Spring初步

一.Spring概述: Spring 也表示是一个开源框架,是为了解决企业应用程序开发复杂性由Rod Johnson创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角...

ABCJIECBA的专栏 181

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

初步理解:spring bean的生命周期

初步理解:spring bean的生命周期

busizacao的博客 189

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Spring初步认识

Spring : 经常说的Spring 一般都是说 Spring Framework Spring 包含很多框架: 3.Core Container(核心容器) Beans模块:提供了BeanFactory,是工厂模式的经典实现,Spring 将管理对象称为Bean。 ·Context上下文模块:建立在核心和Beans模块的基础之上,它是访问定义和配置任何对象的媒介。ApplicationContext接口是上下文模块的焦点。 . Core核心模块:提供了Spring 框架的基本组成部分,包括loC和DI

qq_45667916的博客 277

初步原理分析-Spring开发

Spring是目前最流行的Java框架,即Spring Framework。直接基于Spring Framework开发会很繁琐,比如依赖配置以及大量的项目配置文件。SpringBoot就是基于Spring这个基础框架开发的,它简化开发过程,比如起步依赖配置,自动装配等等,这些让项目开发更加简单、快捷。

weixin_63566741的博客 366

Spring初步了解

(1)Spring是轻量级的开源的javaEE框架(2)Spring框架可以解决企业应用开发的复杂性(3)Spring有两个核心部分:IOC和AOP(4)Spring特点(5)

qq_61529681的博客 387

Spring的初步了解

1. Spring 概述 1.1是什么 spring是轻量级的javeSE/EE开源框架,内核是ioc(反转控制)和aop(面向切面编程),提供了springMVC和spring JDBCTemplate 及业务事务管理等众多的企业级应用技术.整合开源世界众多的第三方开源框架和类库.成为了使用最多的java EE 企业应用开源框架 1.2 发展历程 2017年9 月发布了spring5.0 通用版...

weixin_45160274的博客 222

spring学习初步

一 开始spring之路   1 spring 版的hello world       (1) 首先创建一个Greeting Service 接口, 将实现从接口中分离出来。        package cn.bupt.duming.service;public interface GreetingService {         void sayHello

jake1010的专栏 518

初步认识spring

B. 简化企业级应用的开发。Spring是一个当前比较流行的。

2401_87282872的博客 166

spring boot 初步学习

说到spring boot 就不得不说spring ,说到spring就不得不说EJB,AOP等,所以我们还是一个一个了解! spring spring是为了解放EJB的,解决企业应用开发复杂性而创造出来的。它的最大特点就是:通过配置文件形式,实现分层架构。 举例:之前你A类中需要B类的帮助,你需要在类A中new一个B,如果通过spring框架的话,就不需要了,你可以直接通过“中间商”...

凉快 543

初步认识Spring

文章目录1、Spring概述1.1 简介1.2 优点1.3 组成1.4 核心模块说明1.5 三大核心组件的关系1.6 拓展2、Spring框架两大核心:IoC和DI2.1 IOC理论推导 1、Spring概述 1.1 简介 Spring是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spting框架目标是简化Java企业级应用开发,井通过POJO为基础的编程模型促进良好的编程习惯, 2002年,Rod Jahn

qq_25447799的博客 207

spring初步

IOC依赖注入 一、基于配置文件完成设值注入 spring依赖 <dependency> <!--spring ioc和aop都会加载进来--> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.5.RELEASE</version>

muran202236的博客 190

对Spring框架初步认识

还没接触过Spring,看得有点模糊。。一、Spring诞生 Spring是一个开源框架,目前在开源社区的人气很旺,被认为是最有前途的开源框架之一。她是由Rod Johnson创建的,她的诞生是为了简化企业级系统的开发。说道Spring就不得不说EJB,因为Spring在某种意义上是EJB的替代品,她是一种轻量级的容器。用过EJB的人都知道EJB很复杂,为了一个简单的功能你不得不编写多个J

Think in Java 651
上一篇: 利用Filter实现用户自动登录
下一篇: 动态代理AOP(面向切面编程)
codelady
博客等级 码龄11年 26粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值