Spring框架context的注解管理方法之二 使用注解注入对象属性

首先还是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" 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="com.swift"></context:component-scan>
</beans>

接着是假定dao的类

package com.swift;

import org.springframework.stereotype.Component;

@Component(value="dao")
public class Dao {
    public String fun() {
        return "This is Dao‘s fun()........";

    }
}

生成一个对象很方便,甚至@Component(value="dao")中的value=都可以不写,变成

@Component("dao")

然后是假定service的类

package com.swift;

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

@Component(value="service")
public class Service {

    @Autowired
    private Dao dao;
    public String fun() {
        return "This is Service‘s fun()......."+"\r\n"+this.dao.fun();
    }
    //注意使用注解方法,不需要自己生成setter方法了
    public void setDao(Dao dao) {
        this.dao = dao;
    }

}

与配置文件中使用<bean id="service" class="com.swift.Service"><property name="dao" ref="dao"></property></bean>

不同,注解生成两个对象后,再注解属性

@Autowired

就搞定了,自动装配,自动连线

最后使用Servlet来测试一下

package com.swift;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
@WebServlet("/test")
public class ServletTest extends HttpServlet {
    private static final long serialVersionUID = 1L;
    public ServletTest() {
        super();
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().append("Served at: ").append(request.getContextPath());
        ApplicationContext context=new ClassPathXmlApplicationContext("zhujie.xml");
        Service service=(Service) context.getBean("service");
        String test=service.fun();
        response.getWriter().append(test);
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

浏览器结果如下

自动装载的这种方法   @Autowired    原理是通过类名找到定义的对象,这种注解使用不多,因为多个对象存在的话,注入的是哪个?

所以,使用

另一个注解,可以明确到底注入哪个对象

@Resource(name="dao")
private Dao dao;

这种方法使用较多

时间: 2024-11-03 03:10:37

Spring框架context的注解管理方法之二 使用注解注入对象属性的相关文章

Spring注解驱动开发(二)--组件注入

一.前言 上一篇我们搭建了一个简单的Spring项目,并简单的使用了 组件注册.这一篇中,我们来详细的讲解组件注入. 二.组件注入 1. @ComponentScan 在上一篇中,我们使用了@Configuration和@Bean实现了组件注入.但是如果需要注入的组件很多的情况下,每个组件都需要通过一个@Bean注解进行注入,这样就会很麻烦.所以Spring提供了@ComponentScan注解. @ComponentScan可以指定需要扫描的包,在这些包下,@Component注解标注的组件都

12 Spring框架 SpringDAO的事务管理

上一节我们说过Spring对DAO的两个支持分为两个知识点,一个是jdbc模板,另一个是事务管理. 事务是数据库中的概念,但是在一般情况下我们需要将事务提到业务层次,这样能够使得业务具有事务的特性,来管理业务. 例如:在银行的转账系统中,张三转账给李四,需要完成从张三的账户上扣取指定金额并加到李四的账户上,这样一个过程需要具有原子性,即要成功都成功,要失败都失败.转账的过程即两个对账户更新,需要将事务提升到业务层次,使得两个操作具有原子性! 对以上的实现,Spring的API中有两个常用的接口我

Spring框架bean的配置(3):基于注解的配置,Autowired 自动装配 Bean,泛型依赖注入

1.基于注解的配置: @Component: 基本注解, 标识了一个受 Spring 管理的组件 @Respository: 标识持久层组件 @Service: 标识服务层(业务层)组件 @Controller: 标识表现层组件 建立接口:UserRepository package com.atguigu.spring.beans.annotation.test; public interface UserRepository { void save(); } 建立类:UserReposito

Spring框架的配置文件分开管理(了解)

1. 例如:在src的目录下又多创建了一个配置文件,现在是两个核心的配置文件,那么加载这两个配置文件的方式有两种! * 主配置文件中包含其他的配置文件: <import resource="applicationContext2.xml"/> * 工厂创建的时候直接加载多个配置文件: ApplicationContext applicationContext = new ClassPathXmlApplicationContext( "applicationCon

iOS项目实现SVN代码管理方法(Part 二)

前言部分 由于文章截图太多,超过了发布限制所以只能将内容分成了三部分 嘿嘿. 一.提交/签入本地代码上传到服务器 1)建立服务器连接后点击import 如图2步骤2所示 添加本地代码到服务器即可 如图 [图6] 2)填写提交日志记录信息 如图 [图7] 3)代码提交到服务器成功后状态 如图 [图8] 二.获取/签出服务器代码到本地 1)点击主界面中的Export 按钮 如图2步骤3所标示,选择本地保存路径确定即可 如 [图9] 2)获取到项目代码后,通过Xcode打开项目创建Working Co

nodejs第三天(核心模块与文件模块,核心模块和文件模块引入的区别,从模块外部访问模块内部,使用exports对象,npm包管理工具package.json文件,模块对象属性,将模块定义分类,npm发布流程,安装淘宝镜像,模块的管理)

核心模块与文件模块 ndejs是一个js运行环境,是一个平台.nodejs基于操作系统,封装了一些功能,http,tcp,udp,i/o模块,path,fs,stream等等 通过nodejs内置的模块,他们就称为核心模块.(他们都是nodejs内置的)http,fs,path等 文件模块:只要写一个js文件,每一个文件都是模块 .(自己写的js文件都被称为文件模块) 核心模块和文件模块引入的区别 核心模块有环境变量做调度 文件模块需要给出文件路径 注意:核心模块是nodejs内置的一些功能模块

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 注解管理

一.注解准备 1.xml引入新的约束,并开启注解扫描 context:component-scan标签开启注解扫描 2.导入注解有关jar包 二.注解创建对象 1.User类 @Component( value="user" )等同于<bean id="user" class="beans.User"> </bean> value的值任意,自动注入是通过类名来找跟对应属性匹配. 2.测试类 三.注解注入属性 1.User类

Spring框架第一天

html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption