内容源自:使用ioc注解方式配置bean

context层 : 
上下文环境/容器环境 applicationContext.xml

1 ioc注解功能

注解 简化xml文件配置 如 hibernate 映射文件

ioc注解 简化 ioc容器的配置

1 bean对象定义过程

@Component

该注解用于标注一个类

标注哪些需要使用ioc管理/实例化的类

被标注的类会成为ioc实例化的对象

ioc容器解析时,会在工程中扫描所有被该注解标注的类,使用ioc方式对其进行实例化。

@Controller 用于标注业务逻辑对象 xxServlet xxAction xxController

@Service 用于标注服务类型对象 xxService xxServiceImpl

@Repository 用于标注持久化对象 xxDao xxDaoImpl 这三个注解的使用方式和作用效果与@Component一模一样 为了程序开发的规范性,尽量什么类型的对象就使用什么注解进行标注。

2 bean之间的注入过程

@Autowired 自动装载。该注解用于标注目标对象中的一个属性,根据被标注属性的属性名和属性类型在ioc容器中查找匹配的bean,从而得到需要的bean对象。

具体示例: 
现在ioc容器中添加context层支持: 
包括添加xmlns:context、xsi:schema、注解扫描地址

<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-3.2.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.2.xsd">

    <!--
        ioc注解功能 ~ context层
            导入context层对应的命名空间和schame文件
        如果包结构太多,直接扫描com
     -->
    <context:component-scan base-package="com.etoak.action,com.etoak.dao"></context:component-scan>

</beans>

LoginAction.java: 
这里面注意@Component中的参数la可以写也可以不写,写上了就指定了bean对象的id值,默认为类名开头字母小写loginAction.

@Component("la")   // <bean id="la" class="xx.LoginAction"/>
public class LoginAction {

    @Autowired
    private UserDaoImpl ud;
    /**
     * 首先根据被标注属性的属性名'ud'
     * 在ioc容器中查找一个 id="ud" 的bean进行注入
     * 再根据被标注属性的属性类型 'UserDaoImpl'
     * 在ioc容器中查找一个 class="UserDaoImpl" 的bean进行注入
     * @return
     */

    public String execute() {
        System.out.println("处理客户端提交的login.action请求");
        ud.login();
        return "success";
    }
}

UserDaoImpl.java

@Component     // <bean id="userDaoImpl" class="xx.UserDaoImpl"/>
public class UserDaoImpl {

    public boolean login(){
        System.out.println("连接数据库判断登录是否成功");
        return true;
    }
}

测试类:

public class Test {

    public static void main(String[] args) {

        ApplicationContext ac = new
            ClassPathXmlApplicationContext("applicationContext.xml");

        /**
         * 1 在使用注解方式实例化bean对象时
         * 由于没有为其设置具体的ID值
         */
        LoginAction la = ac.getBean(LoginAction.class);

        /**
         * 2 虽然没有手动为其设置ID值
         * 但是注解会自动为其提供一个ID值
         *      类名 首字母小写
         */
        UserDaoImpl ud =
                (UserDaoImpl)ac.getBean("userDaoImpl");

        /**
         * 3 手动为其设置一个ID值
         */
        LoginAction la2 = (LoginAction)ac.getBean("la");
    }
}

Spring框架学习(6)使用ioc注解方式配置bean的更多相关文章

  1. Spring使用ioc注解方式配置bean

    context层 : 上下文环境/容器环境 applicationContext.xml 具体示例: 现在ioc容器中添加context层支持: 包括添加xmlns:context.xsi:schem ...

  2. 跟着刚哥学习Spring框架--通过注解方式配置Bean(四)

    组件扫描:Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 特定组件包括: 1.@Component:基本注解,识别一个受Spring管理的组件 2.@Resposit ...

  3. spring学习笔记 星球日two - 注解方式配置bean

    注解要放在要注解的对象的上方 @Autowired private Category category; <?xml version="1.0" encoding=" ...

  4. spring框架学习(五)注解

    注解Annotation,是一种类似注释的机制,在代码中添加注解可以在之后某时间使用这些信息.跟注释不同的是,注释是给我们看的,Java虚拟机不会编译,注解也是不编译的,但是我们可以通过反射机制去读取 ...

  5. 码农小汪-spring框架学习之2-spring IoC and Beans 控制反转 依赖注入 ApplicationContext BeanFactory

    spring Ioc依赖注入控制反转 事实上这个东西很好理解的,并非那么的复杂. 当某个Java对象,须要调用还有一个Java对象的时候(被依赖的对象)的方法时.曾经我们的做法是怎么做呢?主动的去创建 ...

  6. Spring框架的AOP技术(注解方式)

    1. 步骤一:创建JavaWEB项目,引入具体的开发的jar包 * 先引入Spring框架开发的基本开发包 * 再引入Spring框架的AOP的开发包 * spring的传统AOP的开发的包 * sp ...

  7. Spring框架中的AOP技术----注解方式

    利用AOP技术注解的方式对功能进行增强 CustomerDao接口 package com.alphajuns.demo1; public interface CustomerDao { public ...

  8. spring之通过注解方式配置Bean(一)

    (1)组件扫描:spring能够从classpath下自动扫描.侦测和实例化具有特定注解的组件. (2)特定组件包括: @Component:基本注解,标识一个受spring管理的组件: @Respo ...

  9. 使用Spring框架入门二:基于注解+XML配置的IOC/DI的使用

    一.简述 本文主要讲使用注解+xml配合使用的几种使用方式.基础课程请看前一节. 二.步骤 1.为Pom.xml中引入依赖:本例中使用的是spring-context包,引入此包时系统会自动导入它的依 ...

随机推荐

  1. react-router 页面离开 提示数据变更

    以前项目使用 react-router2.0, 业务层面页面离开的时候需要弹出自己的弹出框,根据用户的操作,进行是否可以离开 试了几种方式都存在问题,实现的并不完美,没办法对用户点击浏览器后退支持的很 ...

  2. 【JBPM4】流程实例变量存取

    设置流程实例变量 //创建流程引擎 ProcessEngine processEngine = Configuration.getProcessEngine(); //获得执行服务 Execution ...

  3. 通过IP地址和子网掩码计算主机数

    知道ip地址和子网掩码后可以算出: 1. 网络地址 2. 广播地址 3. 地址范围 4. 本网有几台主机 例1:下面例子IP地址为192·168·100·5 子网掩码是255·255·255·0.算出 ...

  4. flex布局各种情况总结分析及实例演示

    2009年,W3C提出了一种新的方案----Flex布局,可以简便.完整.响应式地实现各种页面布局.目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能. 通过笔者大量实践,发现 ...

  5. 前端读者 | 前端面试基础手册(HTML+CSS)

    本文来自@羯瑞:希望前端面试基础手册能帮助要找工作的前端小伙伴~~ HTML 前端需要注意哪些SEO? 合理的title.description.keywords:搜索对着三项的权重逐个减小,titl ...

  6. golang实现mysql数据库备份

    背景 navicat是mysql可视化工具中最棒的,但是,在处理视图的导入导出方面,它是按照视图名称的字母顺序来处理的,若视图存在依赖,在导入过程中就会报错.前面已经用python写了一个,但在使用过 ...

  7. 使用php后台给自己做一个页面路由,配合ajax实现局部刷新。

    今天就要放假了,把近来囤积的小玩意儿总结整理一下. 在请求一个html页面来嵌入到当前页会有一个问题,就是跟随请求过来的html他的样式表和脚本会失效.是因为文档加载的先后顺序等问题造成的.因此,加载 ...

  8. LoadRunner中常用函数参考手册

    基础篇1:LoadRunner中常用函数参考手册 常用函数列表 web_url web_submmit_form VS web_submmit_data VS web_custom_request w ...

  9. python 正则匹配中文(unicode)(转)

    由于 需求原因,需要匹配 提取中文,大量google下,并没有我需要的.花了一个小时大概测试,此utf8中文通过,特留文.    参考: http://hi.baidu.com/nivrrex/blo ...

  10. 如何访问mvc 默认的错误页

    在ActionResult 中: public ActionResult Error() { return View("~/Views/Shared/Error.cshtml"); ...