博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring框架学习之第2节
阅读量:4626 次
发布时间:2019-06-09

本文共 4377 字,大约阅读时间需要 14 分钟。

传统的方法和使用spring的方法

使用spring,没有new对象,我们把创建对象的任务交给了spring的框架,通过配置用时get一下就行。

项目结构

applicationContext.xml

小明

UserService.java

package com.service;public class UserService {		public String name;		private BybService byeService;	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}		public BybService getByeService() {		return byeService;	}	public void setByeService(BybService byeService) {		this.byeService = byeService;	}		public void sayHello(){		System.out.println("hello " + name);		byeService.sayBye();	}}

BybService.java

package com.service;public class BybService {		private String name;	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}		public void sayBye(){				System.out.println("bye " + name);			}}

Test.java

package com.test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.service.BybService;import com.service.UserService;public class Test {		public static void main(String[] args){		//我们先使用传统方法,来调用UserService的sayHello方法//		UserService userService = new UserService();//		userService.setName("小明");//		userService.sayHello();				//我现在来使用spring来完成上面的任务		//1.得到spring的applicationContext对象(容器对象)		//通过类路径加载文件,这个对象就对象applicationContext.xml文件		//这句话会导致spring文件被加载		ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");		UserService us = (UserService)ac.getBean("userService");		us.sayHello();						//从ac(代表applicationContext这个容器)中取出		//BybService bybService = (BybService) ac.getBean("bybService");		//bybService.sayBye();			}}

 

spring的运行原理图

 

我们再看spring

对以前案例小结

spring实际上是一种容器框架,可以配置各种bean(action/service/domain/dao,spring各个层都可以接管),并且可以维护bean与bean之间的关系,当我们需要使用某个bean的时候,我们可以getBean(id),使用即可。

ioc是什么?

答:ioc(inverse of crontrol)控制反转:所谓控制反转就是把创建对象(bean),和维护对象(bean)的关系的权利转移到spring的容器文件(applicationContext.xml),通过配置文件就可以把创建对象和维护对象关系搞定,而程序的本身不再维护了,程序要什么就取什么。

 

学习框架,最重要的就是学习各个配置,配置搞清楚了,配置就明白了。

 

DI是什么?

答:(dependency injection)依赖注入:实际上DI和IOC是同一个概念,spring的设计者认为DI更准确地表示spring的核心技术。

 

大的项目(税务,证券,石油,财务,政务系统,oa,erp)有很多模块是通用的,

比方说:分页,数据源可以将其做成一个bean,再比如安全机制,写日志,都将其做成一个bean,用的

时候将这个bean注入进去就行了,这样开发就像搭积木了,用的时候引用一下就行了。

 

使用了spring变成的力度变大了,开发效率肯定会提高。

(汇编 指令编程,c 语句编程,Java对象编程,spring 组件编程)

 

把ApplicationContext做成一个单例的了

修改后的项目

项目结构

 

applicationContext.xml

小明

UserService.java

package com.service;public class UserService {		public String name;		private BybService byeService;	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}		public BybService getByeService() {		return byeService;	}	public void setByeService(BybService byeService) {		this.byeService = byeService;	}		public void sayHello(){		System.out.println("hello " + name);		byeService.sayBye();	}}

BybService.java

package com.service;public class BybService {		private String name;	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}		public void sayBye(){				System.out.println("bye " + name);			}}

Test.java

package com.test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.service.BybService;import com.service.UserService;import com.util.ApplicationContextUtil;import org.springframework.context.ApplicationContext;public class Test {		public static void main(String[] args){						((UserService)ApplicationContextUtil.getApplicationContext().getBean("userService")).sayHello();					}}

ApplicationContextUtil.java

package com.util;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;//工具类,保证applicationContext只能有一个final public class ApplicationContextUtil {		private static ApplicationContext ac = null;		private ApplicationContextUtil(){			}		static{		ac = new ClassPathXmlApplicationContext("applicationContext.xml");			}		public static ApplicationContext getApplicationContext()	{		return ac;	}}

 

转载于:https://www.cnblogs.com/beautiful-code/p/5765757.html

你可能感兴趣的文章
JAVA wait(), notify(),sleep具体解释
查看>>
数据挖掘十大经典算法
查看>>
WebService原理
查看>>
【Unity 3D】学习笔记三十七:物理引擎——碰撞与休眠
查看>>
js动态删除div元素
查看>>
计算机网络中的TCP/IP模型
查看>>
spring mvc 自定义Handlermapping
查看>>
JS验证密码安全级别
查看>>
Cookie是可以覆盖的,如果重复写入同名的Cookie,那么将会覆盖之前的Cookie。
查看>>
Django Models的数据类型
查看>>
博客之初体验-----python初了解
查看>>
jquery.fileupload插件 ie9下不支持上传
查看>>
6.1 HTML5的框架
查看>>
Nginx的500,502,504错误解决方法
查看>>
SAP MM MM17里不能修改物料主数据'Purchasing Value Key'字段值?
查看>>
C#中数组、ArrayList和List三者的区别
查看>>
MVC4 WEBAPI(一)使用概述
查看>>
poj2114 Boatherds
查看>>
maven学习(上)- 基本入门
查看>>
20165231 实验一 Java开发环境的熟悉
查看>>