`
wx1568908808
  • 浏览: 31405 次
文章分类
社区版块
存档分类
最新评论

Spring-IOC实现(自动注入)

 
阅读更多

@[TOC]

自动注入

XML自动配置

XML自动配置通过四个注解实现,功能一样的 | 注解 | 描述 | ------ | ------ | |@Component|一般用在身份不明确的组件上| |@Service|一般用在service层| |@Controller|一般用在控制层 |@Repository|一般用在数据库访问层

在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"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">
			<!--扫描全部 -->
 			<!--  <context:component-scan base-package="com.sxt.*.dao.impl"></context:component-scan>
 		<!--扫描指定文件,一条语句完成 -->
 	<context:component-scan base-package="com.sxt.dao.impl,com.sxt.service.impl,com.sxt.controller"></context:component-scan>-->
    
    <!--扫描指定文件 -->
    <context:component-scan base-package="com.sxt.dao.impl"></context:component-scan>
	<context:component-scan base-package="com.sxt.service.impl"></context:component-scan>
	<context:component-scan base-package="com.sxt.controller"></context:component-scan>
</beans>

在Controller配置

@Controller//该注解作用和在applicationContext.xml中的<bean>的作用是一样的
public class UserController {
	private IUserService service;
	@Resource
	public void setService(IUserService service) {
		this.service = service;
	}
	
	public void say(String msg){
		
	     System.out.println("controller:"+service.say(msg));
		
		
	}
}

在dao层的实现类配置

@Repository
public class UserDAOImpl implements IUserDAO {

	@Override
	public String say(String msg) {
		System.out.println("--->"+msg);
		return "hello";
	}


}

在service层实现类配置

@Service
public class UserServiceImpl implements IUserService {
	
	// 调用者与被调用者之间 DI 依赖注入 设值
	   @Resource
		private IUserDAO dao;

		@Override
		public String say(String msg) {
			
			return dao.say(msg);
		}

		
		/**
		 * 设值注入必要提供的setter方法
		 * @param dao
		 */
		public void setDao(IUserDAO dao) {
			this.dao = dao;
		}
}

测试

public class test {
	public static void main(String[] args) {
		ApplicationContext ac=
				new ClassPathXmlApplicationContext("applicationContext.xml");
		UserController controller = ac.getBean(UserController.class);
		   controller.say("aaa");
	}
	
	
	
}

测试结果

java自动配置

①配置javaConfig

@Configuration
//添加扫描
@ComponentScan("com.sxt.*")
//多个文件扫描
//@ComponentScans(value={@ComponentScan(""),@ComponentScan("")})
/*@ComponentScan(value="com.sxt.*"
				,useDefaultFilters=true
				,excludeFilters={@ComponentScan.Filter(type=FilterType.ANNOTATION,classes=Service.class)})*/
public class javaConfig {

}

②配置dao层实现类

//@Component // 等价于 <bean class="com.sxt.service.impl.UserDaoImpl" name="userDaoImpl"/>
@Repository
public class UserDAOImpl implements IUserDAO {

	@Override
	public String say(String msg) {
		System.out.println("--->"+msg);
		return "hello";
	}
}

③配置service实现类

//@Component // 将当前类交给Spring容器管理
@Service
public class UserServiceImpl implements IUserService {
	
	// 调用者与被调用者之间 DI 依赖注入 设值
	   @Resource
		private IUserDAO dao;

		@Override// 只能根据类型查找
		public String say(String msg) {
			
			return dao.say(msg);
		}

		
		
}

④配置控制层

@Controller
public class UserController {
	
	@Resource
	private IUserService service;
	
	
	public void sleep(){
		System.out.println("休息一会....");
	}
	
	public void say(String msg){
		
	     System.out.println("controller:"+service.say(msg));
		
		
	}
}

⑤测试

public class test {
	public static void main(String[] args) {
		ApplicationContext ac=
				new AnnotationConfigApplicationContext(javaConfig.class);
		UserController controller = ac.getBean(UserController.class);
		   controller.say("aaa");
	}

在这里插入图片描述

转载于:https://my.oschina.net/u/4116634/blog/3038123

分享到:
评论

相关推荐

    Spring-ioc-jar

    4. **依赖注入**: 在实例化Bean的同时,Spring会根据Bean定义中的依赖关系,自动将所需的其他Bean注入到当前Bean中。依赖注入可以通过属性注入(setter方法)、构造器注入或者方法注入实现。 5. **生命周期管理**: ...

    Spring-IOC实现

    下面,我们将深入探讨Spring-IOC的实现,包括注解的使用和注解解析。 1. **控制反转(IOC)概念** - 控制反转是设计模式中的一个概念,它改变了传统的对象获取方式。在没有IOC的情况下,对象通常自行创建依赖。而...

    maven-spring-ioc

    Spring IoC通过XML配置文件实现了对象的实例化和依赖注入,有效地降低了对象间的耦合,提高了代码的可读性和可维护性。理解并熟练运用Spring的IoC机制是成为一名优秀的Java开发者的关键步骤之一。在实际项目中,结合...

    Spring----IOC实现

    例如,使用`@Component`标记一个类为Bean,`@Autowired`自动注入依赖,`@Value`注入属性值: ```java @Component public class ExampleClass { @Autowired private Dependency dependency; } ``` 5. **依赖...

    Spring-IOC实例

    总结,Spring-IOC实例展示了如何利用Spring框架进行对象的创建和管理,以及如何通过依赖注入实现松耦合。理解并熟练运用Spring-IOC能极大地提升Java应用的灵活性和可维护性。在实际开发中,可以根据项目需求选择合适...

    Spring的IoC实现案例

    在运行时,Spring会根据配置自动创建和注入相应的对象,使得我们的`Priter`类无需知道纸张的具体实现。 总结来说,这个案例展示了Spring IoC如何帮助我们构建松散耦合的系统。通过IoC,我们可以轻松地更改`Priter`...

    深入理解java的spring-ioc的使用.docx

    3. **依赖注入**:依赖注入是Spring IoC的核心机制之一,通过构造器注入、setter注入或基于字段的注入等方式,Spring IoC容器可以在运行时动态地为对象提供所需的依赖。 #### 三、Spring-IoC的使用方法 1. **把...

    Spring--IOC

    依赖注入是Spring实现IoC的核心机制。它允许我们在不修改代码的情况下,动态地改变对象之间的依赖关系。在Spring中,我们可以通过XML配置、注解或者Java配置的方式来声明依赖。例如,我们可以在XML配置文件中定义...

    Spring-IoC 复习笔记.rar

    Spring 框架是 Java 开发中不可或缺的一部分,其核心特性之一就是依赖注入(Dependency Injection,简称 DI),也称为控制反转(Inversion of Control,简称 IoC)。IoC 是一种设计模式,它允许我们通过外部配置来...

    spring-demo02-IOC-DI案例.zip

    你可以通过@Autowired注解来告诉Spring自动注入依赖,或者通过setter方法、构造函数等方式进行注入。 3. 测试类:测试代码通常用来验证DI是否正确工作,通过@ContextConfiguration注解加载配置,并使用@Autowired...

    springIoc实现原理

    3. **注解驱动**:通过@Component、@Service、@Repository和@Controller等注解标记组件,结合@Autowired自动注入依赖,简化了配置。 **五、Spring Ioc的工作流程** 1. **读取配置**:Spring容器读取XML、Java配置...

    Spring-IoC概论1

    通过XML配置文件、注解或Java配置类,我们可以告诉Spring我们的对象需要哪些依赖,Spring会自动创建并注入这些依赖,使得代码更加松耦合,更易于测试和扩展。 举个例子,假设我们有一个`UserService`类依赖于`...

    Spring-IoC.rar_容器

    - Spring Boot简化了Spring的配置,通过自动配置机制,使得Spring IoC容器能够自动识别并配置bean。 7. **实战应用** - **配置数据库连接**:Spring IoC容器可以管理数据库连接池,如Druid、HikariCP,通过依赖...

    Spring - Annotation 自动匹配注入IOC

    在Spring框架中,注解(Annotation)自动匹配注入IoC(Inversion of Control,控制反转)是一种关键特性,它极大地简化了Java应用的配置管理。本文将深入探讨这一主题,帮助开发者更好地理解和利用这一功能。 首先...

    spring-demo10-注解-IOC.zip

    "spring-demo10-注解-IOC.zip"这个压缩包文件很显然包含了关于Spring框架如何使用注解进行依赖注入的示例代码。接下来,我们将深入探讨Spring中的注解和依赖注入。 依赖注入(DI)是一种设计模式,它允许我们解耦...

    Java - Spring-IoC(Inverse of Control)–> 控制反转

    - **依赖注入**:依赖注入(Dependency Injection, DI)是IoC的主要实现方式,它使得对象能够通过构造器或setter方法接受依赖项,从而实现解耦。 #### IoC的实现机制 IoC的实现主要依赖于工厂模式和反射机制: - ...

    spring ioc

    例如,使用 `@Component` 注解标记一个类为 Spring Bean,使用 `@Autowired` 注解自动注入依赖: ```java @Component public class ExampleClass { @Autowired private AnotherClass dependency; } ``` 在这里,...

    spring 2.5 IOC 自动扫描,自动注入

    而自动扫描和自动注入是Spring 2.5中实现IOC的两个核心特性,极大地简化了配置工作,提高了开发效率。以下是对这两个特性的详细解释: **自动扫描**: 自动扫描是Spring框架的一个强大功能,它允许开发者指定一个或...

    Spring-4.0.3jar包

    通过XML配置文件或者注解方式,我们可以定义对象及其依赖关系,Spring容器会根据这些信息自动装配对象,实现依赖注入。 其次,AOP是Spring提供的另一个重要特性,它允许开发者在不修改源代码的情况下,对程序进行...

Global site tag (gtag.js) - Google Analytics