Spring IOC容器-注解的方式【更简化】

----更加简化的版本

UserAction.java

import javax.annotation.Resource;

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;

//@Component("userAction")  // 加入IOC容器

//@Component

@Controller  // 控制层的组件
public class UserAction {

	@Resource
	private UserService userService;

	public String execute() {
		userService.save();
		return null;
	}
}

UserService.java

import javax.annotation.Resource;

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

//@Component("userService")  // userService加入ioc容器

//@Component

@Service   // 表示业务逻辑层的组件
public class UserService {

//	@Resource	//  根据类型查找 【在容器中要确保该类型只有一个变量】

	@Resource(name = "userDao")  // 根据名称查找
	private UserDao userDao;  // 去容器中招UserDao类型的变量,找到后就赋值

	public void save() {
		userDao.save();
	}
}

UserDao.java

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;

// 把当前对象加入ioc容器
//@Component("userDao")   //  相当于bean.xml 【<bean id=userDao class=".." />】

//@Component  // 加入ioc容器的UserDao对象的引用名称, 默认与类名一样, 且第一个字母小写

//@Repository   // 在持久层可以选择用这个注解
public class UserDao {

	public UserDao(){
		System.out.println("UserDao.UserDao()");
	}

	public UserDao(int id){
		System.out.println("UserDao.UserDao(int id)" + id);
	}

	public void save() {
		System.out.println("zengmg:保存用户!!!");
	}
}

bean.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:p="http://www.springframework.org/schema/p"
    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.xsd">

	<!-- 开启注解扫描 -->
	<context:component-scan base-package="zengmg.e_anno2"></context:component-scan>

	<bean id="userDao" class="zengmg.UserDao" scope="prototype">
	</bean>

</beans>   

测试代码:

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

public class App {

	// 创建容器对象
	private ApplicationContext ac =
		new ClassPathXmlApplicationContext("zengmg/e_anno2/bean.xml");

	@Test
	public void testExecuteAction() {
		// 从容器中获取Action
		UserAction userAction = (UserAction) ac.getBean("userAction");
		userAction.execute();
	}
}
时间: 2024-08-29 14:48:04

Spring IOC容器-注解的方式【更简化】的相关文章

Spring IOC容器创建对象的方式

一.无参构造函数创建                                                                            我们用Spring创建Student类的对象 Student类声明如下 package com.study.spring; public class Student { private String name; private int age; public String getName() { return name; }

Spring IOC/DI/注解

一.定义:Spring 是一个开源的控制反转(Inversion of Control,IoC/DI)和面向切面(AOP)的容器框架,它的主要目的是简化企业开发 二.实例化Spring容器: 方法一:在类路径下寻找配置文件来实例化容器 1 ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{"beans.xml"}); 方法二:在文件系统路径下寻找配置文件来实例化容器 1 Applicatio

介绍 Spring IoC 容器和 bean

简介 本章涵盖了 Spring Framework实现控制翻转 (IoC) 的原则. IoC 有时也被称为依赖注入 (DI).这是一个对象定义他们依赖的过程,其中对象之间的相关性,也就是说,它们一起工作,只能通过构造函数参数,参数工厂方法或设置在其构造后的对象实例或者是从一个工厂方法返回的对象实例的属性上.容器在创建的 bean 注入这些依赖.这个过程是根本的反转,因此称为控制反转(IoC),bean 本身通过直接构造类,或作为 Service Locator(服务定位器)模式的机制,来控制其依

spring ioc 容器概念

spring ioc 容器 一个java应用程序是有很多类组成的,这些类相互协作.相互作用来提供应用程序的表现行为.那些被其它类组合提供某些行为的类,称之为其它类的依赖(dependencies).利用软件工程中的组合模式(经常是继承模式的反模式)来说,我们经常利用某些类组合成其它类,不管这些类是通过构造函数还是setter方法或其它方法,那么组合成其它类的那些类就是这个组合类的依赖.当组合类要表现出的行为依赖这些类的时候,这些类必须被创建并注入给组合类. 在spring应用中,spring i

Mybaits3源码分析(二):扫描Mapper关联到spring IOC容器

首先讲讲mapper是怎么从配置到对象的. <!-- 采用自动扫描方式创建mapper bean(单个更新模式) --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.xxx.dao" /> <property name="sqlSe

[Spring实战系列](6)配置Spring IOC容器的Bean

1. 简介 Spring提供了一个强大的IOC容器来管理组成应用的bean.为了利用容器服务,必须配置运行于Spring IOC容器中的Bean. 2. 解决方案 你可以通过XML文件,属性文件,注释甚至API来设置Spring IOC容器中的Bean. Spring允许你在一个或者多个bean配置文件中配置bean.对于简单的应用程序,可以在单个配置文件中集中配置bean.但是对于有许多bean的大型应用,你应该根据其功能将其分割到多个配置文件中. 3. 创建Spring配置 正如前面所讲的,

Spring IOC 容器源码分析 - 创建单例 bean 的过程

1. 简介 在上一篇文章中,我比较详细的分析了获取 bean 的方法,也就是getBean(String)的实现逻辑.对于已实例化好的单例 bean,getBean(String) 方法并不会再一次去创建,而是从缓存中获取.如果某个 bean 还未实例化,这个时候就无法命中缓存.此时,就要根据 bean 的配置信息去创建这个 bean 了.相较于getBean(String)方法的实现逻辑,创建 bean 的方法createBean(String, RootBeanDefinition, Obj

详解Spring IoC容器

一.Spring IoC容器概述 1.依赖反转(依赖注入):依赖对象的获得被反转了. 如果合作对象的引用或依赖关系的管理由具体对象来完成,会导致代码的高度耦合和可测试性的降低,这对复杂的面向对象系统的设计是非常不利的. 在Spring中,IoC容器是实现依赖控制反转这个模式的载体,它可以在对象生成或者初始化时直接将数据注入到对象中,也可以通过将对象引用注入到对象数据域中的方式来注入对方法调用的依赖.这种依赖是可以递归的,对象被逐层注入. 关于如何反转对依赖的控制,把控制权从具体业务对象中转交到平

Spring—IOC容器如何实例话Bean

前言  传统应用程序可以通过new和反射的方式来实例化Bean.而Spring Ioc容器则需要根据配置元数据使用反射机制来创建Bean.在Spring Ioc容器中根据Bean创建Bean实例有以下几种方式. (1).使用构造器实例化Bean (2).使用静态工厂实例化Bean (3).使用实例工厂实例化Bean 一.使用构造器实例化Bean:Spring IoC容器能使用默认空构造器也能使用有参数构造器两种方式创建Bean. (a).使用空构造器进行定义,使用此种方式,class属性指定的类