栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

spring之ioc和传参

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring之ioc和传参

spring之ioC

什么是控制反转(或依赖注入)
控制反转(IoC=Inversion of Control)IoC,用白话来讲,就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:(依赖)控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。
IoC还有一个另外的名字:“依赖注入 (DI=Dependency Injection)” ,即由容器动态的将某种依赖关系注入到组件之中
案例:实现Spring的IoC
IOC/DI
将以前由程序员实例化对象/赋值的工作交给了spring处理
例:
我们再写项目
现在客户对你的一个功能不满意需要升级处理

每次更新后都需要修改与这个功能相关联模块的代码实例化对象
我这里只写了两个模块如果是很多个那么一一修改代码将会很麻烦并且如果更新后出了问题还要改回来更加麻烦



这里我们可以导入spring的一个xml文件(先要再pom.xml导入spring依赖)



		
		
		//调用上面写好的
		//修改时无需修改具体的实体类只需修改它调用上面的UserBiz1路径(无论有多少与更新相关的模块都可以一键修改掉)
		
		
		
		//调用上面写好的
		//修改时无需修改具体的实体类只需修改它调用上面的UserBiz1路径(无论有多少与更新相关的模块都可以一键修改掉)
		
		


package com.mjx.web;

import com.mjx.ioc.UserBiz;
import com.mjx.ioc.impl.UserBizImpl;

public class UserAction {
//定义的UserBiz取得名字要和spring-context.xml中一致
	private UserBiz userbiz;
	public UserBiz getUserbiz() {
		return userbiz;
	}
	public void setUserbiz(UserBiz userbiz) {
		this.userbiz = userbiz;
	}
	private void text() {
		userbiz.text();
	}
	public static void main(String[] args) {
		UserAction useraction=new UserAction();
		useraction.text();
	}
}

这时候我们把实例化更新前后的两个方法由这个文件,提供然后写个getset方法
写个测试类提取spring的一个xml文件中的值

package com.mjx.ioc.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.mjx.web.PersonAction;

public class IoC_text {
	public static void main(String[] args) {
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/spring-context.xml");
		PersonAction personaction = (PersonAction) applicationContext.getBean("PersonAction");
		personaction.text();
	}
}
spring传参

set传参
配置文件内代码


	
	
	
	
	吃饭
	睡觉
	打豆豆
	
	
	

实体类代码提供get set代码

package com.mjx.web;

import java.util.List;
public class ParamAction {
	private String name;
	private int age;
	private List hoby;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public List getHoby() {
		return hoby;
	}
	public void setHoby(List hoby) {
		this.hoby = hoby;
	}
	public void execute() {
		System.out.println(this.name);
		System.out.println(this.age);
		System.out.println(this.hoby);

	}
}

运行效果

构造传参
实体类

package com.mjx.web;

import java.util.List;

public class ParamAction {
	private String name;
	private int age;
	private List hoby;
	public ParamAction() {
	}
	public ParamAction(String name, int age, List hoby) {
		super();
		this.name = name;
		this.age = age;
		this.hoby = hoby;
	}
	public void execute() {
		System.out.println(this.name);
		System.out.println(this.age);
		System.out.println(this.hoby);
	}
}

配置文件


		
		
		
		
			
				吃饭
				睡觉
				打豆豆
			
		
	

结果

1、监听器:SpringLoaderListener实现 ServletContextListener接口

package com.mjx.ioc.listenner;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringLoaderListenner implements ServletContextListener {
	@Override
	public void contextInitialized(ServletContextEvent sce) {
		System.out.println("执行监听器方法");
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/spring-context.xml");
		sce.getServletContext().setAttribute("SpringContext", applicationContext);
	}

}

2、配置监听器


	
		
			com.mjx.ioc.listenner.SpringLoaderListenner
		
	


测试

package com.mjx.ioc.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.context.ApplicationContext;

import com.mjx.web.ParamAction;

@WebServlet("/user")
public class UserServlet extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		ApplicationContext SpringContext = (ApplicationContext) req.getServletContext().getAttribute("SpringContext");
		ParamAction paramAction = (ParamAction) SpringContext.getBean("ParamAction");
		paramAction.execute();
	}
}

②、结果:监听器只会执行一次,结果可执行多次

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/352223.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号