SSM学习记录每一天(一)

Spring的入门程序

创建Web项目 导入jar包

在src下创建接口UserDao 接口interface 不是class

public interface UserDao {
	public void say();
}

创建UserDao接口的实现类UserDaolmpl

public class UserDaolmpl implements UserDao {
	public void say() {
		System.out.println("UserDao say Hello World !");
	}
}

创建Srping的配置文件applicationContext.xml

<?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">
	<!--
	  id:属性值,唯一的
	  class:创建对象的类的全路径
	  scope:
	  		singleton:默认值,单实例对象,只有一个对象
			prototype:多实例
	
	  -->
		<bean id="userDao" class="com.yan.ioc.UserDaolmpl" scope="prototype" />
	</beans>

创建测试类

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

public class TestIoc {
public static void main(String[] args) {
	//初始化spring容器,加载配置文件
	ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
	//通过容器获取Userdao实例   UserDao userDao=(UserDao)接口     
	UserDao userDao=(UserDao) applicationContext.getBean("userDao");
	                                                      //获取ID
	userDao.say();
}
}

运行得到输出结果
在这里插入图片描述

依赖注入的 实现方式

平常的Java开发中,程序员在某个类中需要依赖其它类的方法。

通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理。

Spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过Spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。

依赖注入的另一种说法是"控制反转"。通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员。

而控制反转是指new实例工作不由我们程序员来做而是交给Spring容器来做。、

在包中创建接口UserService,在接口中编写一个say()方法

public interface UserService {
	public void say();
}

创建接口的实现类UserServicelmpl

public class UserServicelmpl implements UserService {
	//声明UserDao
	private UserDao userDao;
	//添加setter方法,用于实现依赖注入

	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}
	public void say() {
		//调用UserDao中的say对象,并执行输出语句
		this.userDao.say();
		System.out.println("userService say Hello World !");
	}

}

在配置文件中创建一个位UserServcie的Bean

	<bean id="userService" class="com.yan.ioc.UserServicelmpl">
	<!-- 将id为userDao的Bean实例注入到userService实例中  -->	
	<property name="userDao" ref="userDao"/>
	</bean>

	上述代码中property是bean元素的子元素,它用于调用Bean实例中的setUserDao方法完成属性赋值,从而实现依赖注入。
	其name属性表示Bean实例中的相应属性名,ref属性用于指定其属性值。

创建测试类TestDI

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

public class TestDI {
	public static void main(String[] args) {
		//1.初始化Srping容器,加载配置文件
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		//2.通过容器获取UserService实例
		UserService userService= (UserService) applicationContext.getBean("userService");
		//3.调用实例中的say方法
		userService.say();
	}
}

运行程序输出结果
在这里插入图片描述
输出结果可以看出,使用Spring容器通过UserService实现类中的say()方法,调用类UserDao实现类中的say()方法,
并且输出了结果。这就是Spring容器属性setter注入的方式,也是实际开发中常用的一种方式。

读黑马程序员《Java EE企业级 应用开发教程》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值