Java EE 依赖注入

依赖注入(简称DI)与控制反转(简称IoC)的含义相同。只不过这两种称呼是从两种角度描述的同一概念。对于一个Spring初学者来说,这两种称呼很难理解,下面我们简单的描述一下:

     当某个java对象(调用者)需要调用另一个java对象(被调用者,即被依赖对象)时,在传统模式下,调用者通常会使用“new 被调用者”的方式来创建对象,这种方式使调用者与被调用者之间的耦合性增加,不利于后期项目的升级和维护。

     在使用Spring框架之后,对象的实例不再由调用者创建而是由Spring容器来创建,Spring容器会负责控制程序之间的关系,而不是由调用者的代码直接控制。这样就发生了Spring的控制反转。

     从Spring容器角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量,这相当于为调用者注入了他依赖的实例,这就是Spring的依赖注入,这就是Spring的依赖注入

下面来是实现一个依赖注入的例子

1、在com.itheima.ioc包中,创建接口UserService,在接口中编写一个say()方法,如下面代码所示

     

package com.itheima.ioc;

public interface UserService {

	public void say();
	
}

2、在com.itheima.ioc包中创建一个UserService接口的实现类UserServiceImpl,在类中声明userDao属性,并添加属性的setter方法,如下面代码所示:

package com.itheima.ioc;

public class UserServiceImpl implements UserService {

	//声明属性
	private UserDao 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 !");
	}

}

3、在配置文件applicationContext.xml中,创建一个id为userService的Bean,该Bean用于实例化UserServiceImpl类的信息,并将userDao实例注入到userService中,其代码如下所示:

<?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-4.3.xsd">
    
    <bean id="userDao" class="com.itheima.ioc.UserDaoImpl" /> 
    //创建一个bean
    <bean id="userService" class="cpm.itheima.ioc.UserServiceImpl">
        //将id为userDao的Bean实例注入到userService实例中
        <property name="userDao" ref="userDao"/>
    </bean>
    
</beans>   

4、在com.itheima.ioc包中,创建测试类TestDI,来对程序进行测试,如下面代码所示:

package com.itheima.ioc;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestDI {

	private static ApplicationContext applicationContext;

	public static void main(String[] args) {
		applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		//通过容器获得userDao实例
		UserService userService = (UserService) applicationContext.getBean("userService");
		//调用实例中的say()方法
		userService.say();
	}
}

5、执行程序后,控制台输出结果如图所示

输出信息显示,不仅输出了userService中的say方法,还输出了userDao中的say方法(userDao的创建在上一篇博客Spring程序入门

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java EE (Enterprise Edition) 是一个用于企业级应用开发的平台。它是基于 Java SE (Standard Edition) 平台的扩展,提供了许多用于开发大型分布式应用的功能和技术。 以下是 Java EE 的核心笔记: 1. 基于 Servlet 和 JSP 的 Web 应用开发:Java EE 提供了基于 Servlet 和 JSP 技术的 Web 应用开发框架,用于构建动态 Web 应用。 2. 基于 EJB 的分布式应用开发:Java EE 提供了基于 Enterprise Java Beans (EJB) 技术的分布式应用开发框架,用于构建高可用性和高性能的分布式应用。 3. 数据访问:Java EE 提供了 JDBC、JPA 和 JTA 等技术,用于管理和访问数据。 4. 消息驱动:Java EE 提供了 JMS 技术,用于支持消息驱动的应用开发。 5. Web Services:Java EE 提供了 JAX-WS 和 JAX-RS 等技术,用于支持 Web Services 的开发。 这些是 Java EE 的核心组件,它们为企业级应用开发提供了强大的技术支持。 ### 回答2: Java EEJava Platform, Enterprise Edition)是一个基于Java语言的企业级应用程序开发平台。它提供了一系列的API和工具,用于快速开发、部署和管理企业级应用程序。 Java EE建立在Java SE(Java Platform, Standard Edition)的基础上,为企业级应用开发提供了更强大的功能和工具。它包括了许多子技术,如Java Servlet、JavaServer Pages(JSP)、JavaServer Faces(JSF)、Java Persistence API(JPA)等,用于处理不同的任务和需求。 Java EE的核心是分层架构和组件化开发。分层架构将应用程序划分为不同的层次,包括表示层、业务逻辑层和数据访问层,每一层都有特定的职责和功能。组件化开发则将应用程序划分为一系列的可重用组件,每个组件都有独立的功能和接口。 Java EE还提供了丰富的服务和工具,用于开发和管理企业级应用。例如,它提供了连接池、事务管理、安全性、远程调用等服务,以满足不同应用的需求。它还提供了各种工具,如Eclipse、NetBeans等集成开发环境和应用服务器,用于开发、测试和部署应用程序。 Java EE的优势在于它的跨平台性和可扩展性。由于Java的特性和虚拟机的存在,Java EE应用程序可以在不同的操作系统和硬件上运行,而不需要对代码进行修改。同时,Java EE也提供了强大的扩展机制,允许开发人员根据不同的需求进行定制和扩展。 总而言之,Java EE是一个功能强大的企业级应用开发平台,它提供了丰富的API和工具,支持分层架构和组件化开发,具有跨平台性和可扩展性的优势。通过使用Java EE,开发人员可以更高效地开发、部署和管理企业级应用程序。 ### 回答3: Java EEJava Enterprise Edition,即Java 企业版)是一套用于开发企业级应用程序的Java平台规范,它提供了可靠、可扩展、安全、跨平台的应用开发解决方案。 Java EE 核心笔记主要包含以下内容: 1. 基础概念和架构:Java EE是建立在Java SE(标准版)之上的,它包含了一系列的API、规范和技术,如Servlet、JSP、EJB、CDI等。它的架构分为客户端和服务器端,通过各种组件实现了业务逻辑的分层和分工。 2. Servlet和JSP:Servlet是用于处理HTTP请求和响应的Java程序,它可以动态生成HTML页面;JSP是一种用于编写动态网页的技术,它可以将Java代码嵌入到HTML页面中。Servlet和JSP是Java EE最基础、最常用的组件。 3. EJB(Enterprise JavaBeans):EJB是用于构建底层业务逻辑和访问数据库的组件,它提供了事务管理、连接池、安全性等企业级特性,使得开发者能够更加专注于业务逻辑,而不必关心底层的技术实现细节。 4. CDI(Contexts and Dependency Injection):CDI是一种依赖注入的技术,在Java EE中用于管理组件之间的依赖关系,实现松耦合的开发。通过CDI,开发者可以将各个组件解耦,提高代码的可维护性和可测试性。 5. 安全性和认证:Java EE提供了一套完整的安全和认证机制。开发者可以通过配置验证和授权策略,来保护企业级应用的安全性,确保只有经过身份认证的用户才能访问敏感的资源。 Java EE企业级应用开发需要具备扎实的Java编程基础和对企业级应用开发的理解,同时还需要熟悉Java EE的各个组件和规范。掌握了这些核心知识,开发者可以借助Java EE提供的强大能力,快速、高效地开发出安全、可靠的企业级应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值