zoukankan      html  css  js  c++  java
  • Spring学习笔记(三)—— 使用注解配置spring

    一、使用步骤

    1.1 导包

      

    1.2 为主配置文件引入新的命名空间(约束)

      在applicationContext.xml中引入context约束

      

    1.3 编写相关的类

    public class UserDaoImpl implements UserDao {
    
        @Override
        public void sayHello() {
            System.out.println("Hello Spring...");
        }
    
    }

    1.4 配置注解扫描

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns="http://www.springframework.org/schema/beans" 
        xmlns:context="http://www.springframework.org/schema/context" 
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
                        http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 
                        http://www.springframework.org/schema/context 
                        http://www.springframework.org/schema/context/spring-context-4.2.xsd ">
        <!-- 指定扫描cn.itcast.dao包下的所有类中的注解.
            注意:扫描包时,会扫描指定包下的所有子孙包
         -->
        <context:component-scan base-package="cn.itcast.dao"></context:component-scan>
    </beans>

    1.5 在相关类上添加注解

    @Component(value="userDao")
    public class UserDaoImpl implements UserDao {
    
        @Override
        public void sayHello() {
            System.out.println("Hello Spring...");
        }
    
    }

    1.6 编写测试方法

      @Test
        public void demo1() throws Exception {
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
            UserDao userDao = (UserDao) applicationContext.getBean("userDao");
            userDao.sayHello();
        }

    二、Bean管理中常用的注解

    2.1 @Component组件

      该组件作用在类上,spring还提供了@Component的三个衍生注解(功能目前来讲是一致的)

    • @Controller  :WEB层
    • @Service           :业务层
    • @Repository      :持久层

      这三个注解是为了让标注类本身的用途清晰。

    /**
     * 将对象注册到容器中
     */
    @Repository("userDao")
    // @Component(value="userDao")
    // @Component("userDao")就相当于在xml中配置<bean name="userDao" class="cn.itcast.dao.impl.UserDaoImpl")
    public class UserDaoImpl implements UserDao {

    2.2 属性注入的注解

    【值类型注入】@Value

    • 方式1:通过反射的Field赋值(破坏了封装性)
      @Value("18")
      private Integer age;
    • 方式2:通过set方法赋值
      @Value("lisi")
      public void setName(String name) {
          this.name = name;
      }

    【引用类型注入】

    // @Autowired
    // 问题:如果匹配多个类型一致的对象,将无法选择具体注入哪一个对象
    // @Qualifier("car2") //使用@Qualifier注解告诉spring容器自动装配哪个名称的对象
    @Resource(name="car")
    private Car car;
    • @Autowired:自动装配,默认按类型进行装配
    • @Qualifier:强制使用名称注入
    • @Resource:手动注入,指定注入哪个名称的对象,相当于@Autowired和@Qualifier一起用

    2.3 Bean的作用范围注解@Scope

      @Scope(scopeName="singleton")

    • singleton:单例
    • prototype:多例

    2.4 Bean的生命周期配置

    • @PostConstruct:在对象被创建后调用,相当于init-method
    • @PreDestroy:在销毁之前调用,相当于destory-method

    三、Bean管理的方式对比

      

      XML和注解:

      • XML:结构清晰
      • 注解:开发方便(属性注入)    
  • 相关阅读:
    第九章 监控系统zabbix深入应用监控
    二叉树的迭代遍历
    .NET程序设计实验2
    大数据分析——sklearn模块安装
    C#实现找二维数组中的鞍点
    Javascript——DOM简介
    前端基础——HTML(一)
    Java基础(一)
    前端基础——CSS(一)
    如何配置网络,使内网和WiFi同时使用
  • 原文地址:https://www.cnblogs.com/yft-javaNotes/p/10293699.html
Copyright © 2011-2022 走看看