Spring入门(4)-基于注解方式进行的Bean管理

1. Spring中的注解

1.1 注解的概念
  • 在学习Java基础的时候,对注解有过基本了解,注解主要可以使用在方法属性上面;
  • 注解的格式:@注解名称(属性名称=属性值,属性名称=属性值,…);
  • 至于在Spring中使用注解,就是为了简化XML的配置;
1.2 Spring中针对Bean管理所提供的注解(用于创建实例)
  1. @Component

  2. @Service

  3. @Controller

  4. @Repository

  5. Spring中使用注解需要做的准备工作
    5.1 最基础的jar包导入
    spring-aop-5.2.8.RELEASE.jar
    5.2 开启组件的扫描
    在配置文件中先使用context的名称空间,这里不在介绍如何引入名称空间,前面有介绍;至于配置文件的内容如下;

    <?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">
        <!--在这里的base-packge属性中,填写的是你注解的包名
        当然,你也可以填写一个范围稍微大一点的包,例如:
        cn.dxs.service包中用到了注解,需要扫描,cn.dxs.dao中也用到了扫描,这时就可以两个都填,如下:
        base-package="cn.dxs.service,cn.dxs.dao"
        或者可以修改为:base-package="cn.dxs"
        -->
    		<context:component-scan base-package="cn.dxs.OnCollection"/>
    </bean
    

    5.3 通过上面的操作基本上就已经创建好了使用注解的基本环境了;然后就可以在指定的包里面使用注解了

    5.5 简单的创建一个类,使用一下注解创建对象

        /*
     如果不写value,那么这个类默认的value就是book;
     也就是说如果不写value,那么默认就是当前类首字母小写;
      */
     @Component(value = "thisbook")
     public class Book {
         public  Book(){
         System.out.println("1,2,3");
         }
     }
    

测试方法:

    @Test
    public void test1(){
        ApplicationContext context = new
                ClassPathXmlApplicationContext("/cn/dxs/xml/Bookconfig.xml");
        Book book = context.getBean("thisbook", Book.class);   
    }

运行结果:

2. Spring配置文件中组件的扫描部分内容(了解)


上面的类型是annotation,所以expression属性值为这些注解的都不解释(或者仅仅解释这些标注出来的注解);
如若理解有误,还请指正;

3. Spring基于注解进行属性的注入

  1. @Autowired:根据属性的类型自动装配;
  2. @Qualifier:根据属性的名称进行注入;
    前面两个注解一般是一起使用:如下
//这是属性类
@Component(value = "trisomy")//方便其它注解使用这个名称用来创建该类实例;
public class Trisomy {
    public void test(){
        System.out.println("这是三体");
    }
}
----------------以下是创建对象的类--------------------

/*
如果不写value,那么这个类默认的value就是book;
也就是说如果不写value,那么默认就是当前类首字母小写;
 */
@Component(value = "mbook")
public class MBook {

    @Autowired //根据类型进行注入;
    @Qualifier(value = "trisomy") //根据名字进行注入,毕竟一个接口可能多个实现,而且也可能有同名的类;
    private Trisomy trisomy;//创建一个私有属性

    public MBook(){
    }
    public void TestBook(){
        System.out.println("1,2,3");
        trisomy.test();
    }
}

测试方法:

	    @Test
    public void test1(){
        ApplicationContext context = new
                ClassPathXmlApplicationContext("/cn/dxs/xml/Bookconfig.xml");
        MBook book = context.getBean("mbook", MBook.class);
        book.TestBook();
    }

测试结果:


  1. @Resource:可以根据属性类型注入或名称注入;
    上面的代码可以通过@Resource(javax.annotation.Resource)进行修改:
@Component(value = "mbook")
public class MBook {
    /* @Autowired //根据类型进行注入;
     @Qualifier(value = "trisomy") //根据名字进行注入,毕竟一个接口可能多个实现,而且也可能有同名的类;*/
    @Resource(name = "trisomy")//既可以用作名称又可以用作类型;不添加name属性的时候就是使用类型;
    private Trisomy trisomy;
    public MBook() {
    }
    public void TestBook() {
        System.out.println("1,2,3");
        trisomy.test();
    }
}

输出结果和上面一样;


  1. @Value:注入普通类型属性;

就是对普通类型,进行注入赋值;

    @Value(value = "刘慈欣")
    private String athorname;

按照上面的使用方法就可以了;

4. 完全注解(xml配置文件注解化)

在前面的时候,一直使用的是配置文件,但是每次都写单独的配置文件,感觉也很麻烦,尤其是创建组件的扫描都不相同时,就需要创建很多的配置文件,反倒是通过配置类的方式来替代XML配置文件,简单的多;

使用到的注解有:@Configuration,@ComponentScan;
然后xml配置文件被注解替代后,在创建对象时,代码就需要进行修改了;

测试类:(修改的也不多,只是换成了加载类的方法)

    @Test
    public void test3(){
        //通过AnnotationConfigApplicationContext加载配置类;
        ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
        Trisomy trisomy = context.getBean("trisomy", Trisomy.class);
        trisomy.test();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神秘的天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值