Spring注解的方式创建对象

158 阅读1分钟

注解

  • 代码里面的一些特殊标记。使用注解可以完成一些相关的功能。
  • 写法是@注解名称(属性名称=属性值)
  • 注解可以用在类、方法、属性。

Spring注解开发的基本准备工作

注解可以替代配置文件,但是不能完全脱离配置文件,只能减少配置。

  1. 导入jar包,就是导入Spring最基本的几个jar包。
  2. 导入AOP的jar包,为了使用注解。
  3. 创建一个类,在类中,创建一个方法。
  4. 创建Spring的配置文件,在配置文件当中引入约束。

注解创建对象

  1. 在创建对象的类上面使用注解就可以实现。

  2. 创建对象有四个注解。

    • @Conmponent
    • @Controller web层
    • Service 业务层
    • Repository 持久层
  3. 创建对象是单实例还是双实例

    类的代码

    package cn.itcast.anno;
    
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.*;
    
    @Service(value="user")  //<bean id="user" class="cn.itcast.anno.User">
    @Scope(value="prototype") 
    public class User {
        public void add(){
            System.out.println("add..............");
        }
    }
    

    配置文件

    <?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"> 
            <!-- bean definitions here -->
        <!-- 
            开启注解的扫描,扫描类,方法,属性上面的注解
        -->
        <context:component-scan base-package="cn"></context:component-scan>
    </beans>
    

    测试代码

    package cn.itcast.anno;
    
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class TestAnno {
    
        @Test
        public void testUser(){
            ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
            User user=(User)context.getBean("user");
            System.out.println(user);
            user.add();
        }
    }
    

    测试结果

    cn.itcast.anno.User@ee450

    add...........