Spring-01 注解实现IOC

控制反转和依赖注入

  • Spring通过依赖注入实现控制反转。
  • JavaEE项目通过工厂模式实现控制反转。
  • Spring的依赖注入原理也是基于工厂模式。
  • Spring提供了使用xml、注解、java配置、groovy配置实现依赖注入。

测试环境说明

1.使用myeclipse创建maven项目,jdk基于1.7

2.填写maven项目GAV(三坐标)

3.项目结构

4.pom.xml文件信息

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.etc</groupId>
	<artifactId>spring4demo01</artifactId>
	<version>1.0.0-SNAPSHOT</version>
	<properties>
		<java.version>1.7</java.version>
	</properties>
	<dependencies>
		<!-- https://mvnrepository.com/artifact/junit/junit -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>4.1.9.RELEASE</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.3.2</version>
				<configuration>
					<source>${java.version}</source>
					<target>${java.version}</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

常用注解

  • 声明bean的注解
注解 说明
@Component 声明组件注解,bean没有明确角色。
@Service 业务逻辑层声明bean组件使用(service层或者biz层)。
@Repository 数据访问层声明bean组件使用(dao层)。
@Controller MVC模型中,在控制层(C)声明bean组件层使用。

以上注解位于:org.springframework.stereotype

  • 注入bean的注解
注解 说明
@AutoWired 按照类型装配注入,可以不通过getter和setter访问器注入。
@Qualifier
通常和@AutoWired注解配合使用。

如果@AutoWired找到多个可以装配类型,

则可以通过@Qualifier注解指定bean名称注入。

用法:@Qualifier("entityDao")

@Resource
JSR-250提供的注解,位于javax.annotation包下。

注入时候默认按照名称注入,如果无法匹配名称,则转换为按照类型注入。

名称指属性名称或者setter访问器方法名。

@Inject 用法和@AutoWired类似。

示例代码

数据访问层代码

package com.etc.dao;

import org.springframework.stereotype.Repository;

@Repository //数据访问层注解
public class EntityDao {

	public String getData(){
		return "get data from database";
	}
}

  

业务逻辑层代码

package com.etc.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.etc.dao.EntityDao;

@Service //service层注解
public class EntityService {

	@Autowired //注入bean
	private EntityDao entityDao;

	public String getData(){
		return entityDao.getData();
	}

}

  

配置类代码

package com.etc.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration //声明DiConfig类为配置类
@ComponentScan("com.etc.service,com.etc.dao")  //扫描service和dao包所有使用注解声明的bean,并创建和注册为spring bean
public class DiConfig {

}

测试类

package com.etc.test;

import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import com.etc.config.DiConfig;
import com.etc.service.EntityService;

public class TestClass {

	/**测试使用注解实现IOC*/
	@Test
	public void test1() {
		AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(
				DiConfig.class);
		EntityService es = context.getBean(EntityService.class);
		System.out.println(es.getData());
		context.close();
	}

}

 

测试结果

一月 15, 2018 9:22:54 上午 org.springframework.context.annotation.AnnotationConfigApplicationContext prepareRefresh
信息: Refreshing org.spring[email protected]442c8ab0: startup date [Mon Jan 15 09:22:54 CST 2018]; root of context hierarchy
get data from database
一月 15, 2018 9:22:54 上午 org.springframework.context.annotation.AnnotationConfigApplicationContext doClose
信息: Closing org.spring[email protected]442c8ab0: startup date [Mon Jan 15 09:22:54 CST 2018]; root of context hierarchy

  

原文地址:https://www.cnblogs.com/rask/p/8286765.html

时间: 2024-11-13 10:03:35

Spring-01 注解实现IOC的相关文章

spring基于注解的IOC(2)

spring第二天:spring基于注解的IOC以及IoC的案例1.spring中ioc的常用注解 用于创建对象的:Component.Controller.Service.Repository 用于注入数据的:Autowired.Qualifier.Resource.Value 用于改变作用范围的:Scope . 和生命周期相关:PreDestroy .PostConstruct 2.案例使用xml方式和注解方式实现单表的CRUD操作 持久层技术选择:dbutils3.改造基于注解的ioc案例

Spring(四)注解配置Ioc

原文链接:http://www.orlion.ga/216/ 一.@Autowired beans.xml配置成如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"      xmlns:xsi="http://www.w3.org/2001/XMLSchema-inst

Spring框架4:Spring使用注解和XML配置控制反转(IOC)

本系列笔记均是对b站教程https://www.bilibili.com/video/av47952931 的学习笔记,非本人原创 注解配置IOC 注解配置和基于xml的配置功能是一样的,只是配置形式不一样 这里以一个项目为例,项目还是之前的那个 AccountDAOImpl: package com.jiading.dao.impl; import com.jiading.dao.IAccountDAO; import org.springframework.stereotype.Reposi

Spring常用注解总结

传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件,那么.xml文件又会非常多.总之这将导致配置文件的可读性与可维护性变得很低.2.在开发中在.java文件和.xml文件之间不断切换,是一件麻烦的事,同时这种思维上的不连贯也会降低开发的效率.为了解决这两个问题,Spring引入了注解,通过"@XXX"的方式,让注解与Java Bean紧密

Spring MVC注解的一些案列

1.  spring MVC-annotation(注解)的配置文件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&quo

使用注解实现IOC的配置

一.使用注解实现IoC的配置        /**         * 员工实现类,实现Dao接口,负责User类的持久化操作         **/        //通过注解定义一个DAO        @Component("employeeDao")        public class EmployeeDaoImpl implements EmployeeDao{            public void save(Employee employee){        

Spring基于注解TestContext 测试框架使用详解

概述 Spring 2.5 相比于 Spring 2.0 所新增的最重要的功能可以归结为以下 3 点: 1.基于注解的 IoC 功能:  2.基于注解驱动的 Spring MVC 功能:  3.基于注解的 TestContext 测试框架. Spring 推荐开发者使用新的基于注解的 TestContext 测试框架,本文我们将对此进行详细的讲述. 低版本的 Spring 所提供的 Spring 测试框架构在 JUnit 3.8 基础上扩展而来,它提供了若干个测试基类.而 Spring 2.5

spring利用注解来注册bean到容器

1.spring利用注解来定义bean,或者利用注解来注册装配bean.包括注册到ioc中,装配包括成员变量的自动注入. 1.spring会自动扫描所有类的注解,扫描这些注解后,spring会将这些bean注册到ioc容器中.省去了xml文件的书写bean方法. 2.spring会自动扫描这些注解,spring会自动扫描这些注解. 配置<context:component-sacn base-package="xxxx">后,spring就会自动扫描注解.扫描指定包下所有内

Spring框架学习之IOC(二)

Spring框架学习之IOC(二) 接着昨天的内容,下面开始IOC基于注解装配相关的内容 在 classpath 中扫描组件 <context:component-scan> 特定组件包括: –@Component: 基本注解, 标识了一个受 Spring 管理的组件 –@Respository: 标识持久层组件 –@Service: 标识服务层(业务层)组件 –@Controller: 标识表现层组件 对于扫描到的组件, Spring 有默认的命名策略: 使用非限定类名, 第一个字母小写.

(转)Spring对注解(Annotation)处理源码分析1——扫描和读取Bean定义

1.从Spring2.0以后的版本中,Spring也引入了基于注解(Annotation)方式的配置,注解(Annotation)是JDK1.5中引入的一个新特性,用于简化Bean的配置,某些场合可以取代XML配置文件.开发人员对注解(Annotation)的态度也是萝卜青菜各有所爱,个人认为注解可以大大简化配置,提高开发速度,同时也不能完全取代XML配置方式,XML 方式更加灵活,并且发展的相对成熟,这种配置方式为大多数 Spring 开发者熟悉:注解方式使用起来非常简洁,但是尚处于发展阶段,