`
ahuzl007
  • 浏览: 25881 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Spring annotation 自动注入(Service,DAO)

 
阅读更多

基本上就是用@Component提示Spring生成bean的实例,用@Resource把该bean中用到的其他bean注入(射)进去。。。 好处就是你不用再写spring配置文件了,不用再写set方法了。。。

@Component 相当于
<bean id="xxxx" class="XXXXX.XXXXX" />

@Resource 相当于<bean>↓使用到的其他对象</bean>
<property name="sessionFactory" ref="mySessionFactory" />

 

 1. @Component + @Resource :

 

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:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
   ">
	<!-- <context:annotation-config /> 有了component-scan,这句就可以不写-->
	<context:component-scan base-package="test.service.impl" />
	<context:component-scan base-package="test.dao.impl" />

       
        <!-- 如果你不写@Component,那么下面两句就要写 -->
        <!-- <bean id="testDao" class="test.dao.impl.TestDAOImpl" /> -->
	<!-- <bean id="testService" class="test.service.impl.TestServiceImpl" /> -->
</beans>

 

 

TestDAO.java

package test.dao;

public interface TestDAO {

	public void insert();
}

 

TestDAOImpl.java

package test.dao.impl;

import org.springframework.stereotype.Component;
import test.dao.TestDAO;

@Component
public class TestDAOImpl implements TestDAO {

	@Override
	public void insert() {
		// TODO 自動生成されたメソッド・スタブ
		System.out.println("invoke dao success!");
	}

}

 

TestService.java

package test.service;

public interface TestService {

	public void testDaoInsert();
}

 

 TestServiceImpl.java

package test.service.impl;

import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import test.dao.TestDAO;
import test.service.TestService;

@Component
public class TestServiceImpl implements TestService {

    @Resource
    private TestDAO testDao;

    @Override
    public void testDaoInsert() {
        // TODO 自動生成されたメソッド・スタブ
        testDao.insert();
        System.out.println("invoke service success!");
    }
}

 

在Action中调用一下:(至于struts2和spring的关联配置还有对应的jsp就略去了...)

package tutorial.hello;

import javax.annotation.Resource;
import test.service.TestService;
import com.opensymphony.xwork2.ActionSupport;

public class HelloAction {

    @Resource
    private TestService testService;

    public String doHello() {
    	testService.testDaoInsert();
        return ActionSupport.SUCCESS;
    }
}

 

运行结果
invoke dao success!
invoke service success!

 

2. @Component + @Autowired :
就把1中的Resource换成Autowired就好了
 
3. @Component("") + @Autowired + @Qualifier("") :
("")用来指定spring生成的bean的id,用了@Qualifier("")就一定要指定component("")的bean id
TestServiceImpl.java
package test.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import test.dao.TestDAO;
import test.service.TestService;

@Component("testService")
//@Component
public class TestServiceImpl implements TestService {

    @Autowired
    @Qualifier("testDao")
//	@Resource
	private TestDAO testDao;

	@Override
	public void testDaoInsert() {
		// TODO 自動生成されたメソッド・スタブ
		testDao.insert();
		System.out.println("invoke service success");
	}

}
 
TestDAOImpl.java
package test.dao.impl;

import org.springframework.stereotype.Component;
import test.dao.TestDAO;

@Component("testDao")
//@Component
public class TestDAOImpl implements TestDAO {
	@Override
	public void insert() {
		// TODO 自動生成されたメソッド・スタブ
		System.out.println("invoke dao success!");
	}
}
 
1
0
分享到:
评论
1 楼 jxhow 2013-11-05  
很好,很受用!感谢

相关推荐

    Spring IOC Annotation 注入 学习实例

    Annotation注入是Spring IOC的一种实现方式,它利用Java注解替代XML配置来管理Bean的依赖关系,使得代码更加简洁、可读性更强。 在Spring框架中,我们主要关注以下几个关键的注解: 1. `@Component`:这是一个基础...

    Spring annotation

    - `@Autowired`: 自动装配依赖,Spring会根据类型或属性名自动找到合适的bean进行注入。 - `@Qualifier`: 当有多个相同类型的bean时,使用`@Qualifier`指定具体要注入的bean。 - `@Resource`: 与`@Autowired`类似...

    spring 的Annotation方式

    本文旨在深入探讨Spring框架中基于注解的依赖注入机制,特别是`@Repository`、`@Service`、`@Controller`和`@Component`等核心注解的使用方法,以及如何利用`&lt;context:component-scan&gt;`自动扫描功能,实现类级别的...

    Spring的Annotation配置相关讲义

    在Spring框架中,Annotation配置是一种简洁且强大的方式来管理Bean的定义和依赖注入,它消除了传统的XML配置文件,使得代码更加简洁、易读。在Spring 3.0及以上版本中,Annotation配置得到了广泛的应用。 首先,...

    详解Spring_3.0基于Annotation的依赖注入实现

    ### 详解Spring 3.0基于Annotation的依赖注入实现 #### 概述 Spring框架作为一个广泛使用的Java开发框架,提供了强大的依赖注入(Dependency Injection, DI)能力,帮助开发者轻松管理和组织复杂的Java应用。随着...

    Spring Boot自动注入的原理分析

    例如,在Web开发中,我们可以使用自动注入来注入Controller、Service和DAO等Bean。在微服务架构中,我们可以使用自动注入来注入微服务之间的依赖关系。 Spring Boot的自动注入机制是一个强大的功能,可以帮助开发者...

    基于Annotation并对DAO层封装具有分页功能的S2SH整合实例

    5. 创建Action类,注入Service层对象,调用Service的分页方法。 6. 在Struts2配置文件中配置Action的入口点和结果转发。 7. 在Service层实现业务逻辑,调用DAO的分页查询方法。 8. 创建视图页面,展示分页数据。 ...

    struts2 hibernate3 spring2.5 annotation 整合

    使用注解的方式整合,例如,在Action类中,可以使用`@Autowired`注解让Spring自动注入需要的服务。在Hibernate实体类上,可以使用`@Entity`声明为数据库表,`@Id`标识主键,`@ManyToOne`、`@OneToMany`等表示关联...

    spring_annotation maven 的配置

    5. `@Autowired`:自动注入依赖,Spring会自动寻找类型匹配的Bean注入。 6. `@Qualifier`:配合@Autowired使用,当有多个相同类型的Bean时,指定注入哪个。 7. `@Value`:注入基本类型的值或者从Properties文件中...

    spring3.0依赖注入详解

    本文将深入探讨Spring 3.0中依赖注入的新特性,特别是如何使用`@Repository`、`@Service`、`@Controller`和`@Component`注解来标记类为Bean,以及如何利用`&lt;context:component-scan/&gt;`元素自动扫描和注册这些Bean。...

    SSH笔记-annotation配置注入关系1

    在`SSHnote_Spring_2_Annotation`压缩包文件中,你可能找到了进一步的示例和详细解释,包括如何配置Spring以启用注解处理,以及如何利用注解进行更复杂的依赖管理和配置。这些资料将帮助你更好地理解Spring 4.x中...

    SSM框架下基本的mapper,dao,service,controller等相关文件的整理

    在Service层中,我们可以使用Spring框架提供的依赖注入机制,来将Dao层的对象注入到Service层中,从而实现业务逻辑与数据访问之间的交互。 Controller层 Controller层是SSM框架中的Web层,负责将用户请求与业务...

    Struts2.1Spring2.5IBatisJQuery框架

    2) 利用Struts2的struts2-spring-plugin插件,实现在Action中自动注入service对象。 3) 利用Spring的@Service、@Repository两个Annotation来实现Service类、DAO类在Spring容器中的自动注册,利用@Autowired来实现...

    spring自动扫描和管理Bean的示例

    首先,Spring的自动扫描功能基于组件扫描(Component Scanning)和注解驱动配置(Annotation-driven Configuration)。组件扫描是指Spring容器会遍历指定的包及其子包,寻找带有特定注解的类,这些注解表明该类是一...

    spring annotation 入门

    ### Spring Annotation 入门 #### 一、Spring 注解概述 Spring 框架自2.0 版本起引入了一系列注解支持,这极大简化了配置管理,并为开发提供了更为简洁灵活的方式。通过注解,可以将业务逻辑与配置分离,减少XML...

    spring加入hibernate annotation方式.zip

    4. **DAO层**:创建DAO接口和实现类,使用Spring的`@Repository`注解标记DAO实现类,以便Spring自动处理事务。例如: ```java public interface UserRepository { User findById(Long id); // 其他方法... } ...

    Spring MVC + Hibernate +Annotation

    使用@Autowired注入Service层的实例,调用Service方法完成业务逻辑。 6. **运行与测试**:启动服务器,通过URL访问Controller中的方法,Spring MVC会根据@RequestMapping的设置分发请求,Hibernate则负责与数据库...

    ssm例子一直报错userDao无法注入

    Spring作为核心容器,负责管理对象及依赖注入(DI);Spring MVC处理HTTP请求和响应,提供模型-视图-控制器(MVC)架构模式;MyBatis则作为持久层框架,简化了SQL操作。 在“ssm例子一直报错userDao无法注入”的...

Global site tag (gtag.js) - Google Analytics