[spring学习]6、基于注解配置bean

目录

前言

基本使用

快速入门

xml配置扫描包的一些方法

注解配置Bean的名称

总结


前言

        在这篇文章中,将会使用注解的方式类配置bean,注解相对于xml配置,更加的简洁,个人比较喜欢使用注解,现在的主流也是注解配置,下面就来介绍下常见的配置吧

基本使用

        在使用注解配置之前,要在前面的jar包的基础之上额外添加一个jar包,如下

[spring学习]6、基于注解配置bean_第1张图片

        这里先来介绍一下基本的几个注解

  • @Component:标识一个组件
  • @Controller:表示当前的bean是一个控制器,一般用于Controller
  • @Service:表示当前是一个业务处理的类,一般用于Service
  • @Repository:表示当前是一个持久化层的类,一般用于Dao

我们使用上面的注解表示类之后,spring在进行包扫描时,就会讲这些类加入到spring容器之中进行管理。(注意:上面的几个注解都是逻辑意义上的,并没有实际意义,他们的功能在现在都是一样,并不是我们加了Controller,这个类就变成了控制类)


快速入门

        我们按照传统开发web的步骤,来使用一下注解,我们要创建4个类,分别是dao、service、controller、还有一个utils类,我们使用注解来进行配置,让spring来进行管理。

Dao类

@Repository
public class MemberDao {
}

Service类 

@Service
public class MemberService {
}

Controller类

@Controller
public class MemberController {
}

Utils类

@Component
public class MemberUtils {
}

        可以发现,使用十分的简单,直接在类上面加上注解就行,下一步就是在xml中开启包扫描,必须开启包扫描,spring才会去扫描包,然后才能知道哪些类需要spring进行管理,xml中配置如下 

    

        我的项目结构如下 

[spring学习]6、基于注解配置bean_第2张图片

         在xml中配置的base-package就是告诉spring要扫描哪些包下面的类,下面我们创建一个测试方法,输出spring中所有定义的bean,查看spring是否已经将我们配置的bean放入容器中,测试方法如下

    @Test
    public void t1(){
        ApplicationContext ioc = new ClassPathXmlApplicationContext("beans01.xml");
        String[] names = ioc.getBeanDefinitionNames();
        for (String name : names) {
            System.out.println(name);
        }
    }

         上面代码会输出spring容器中的所有bean,输出如下

[spring学习]6、基于注解配置bean_第3张图片

         可以发现,spring成功将我们配置的bean装配到容器中了,并且名字就是类名首字母变小写。


xml配置扫描包的一些方法

        在xml中我们需要配置spring扫描包的路径,如果就设置一个路径,那么spring就会去扫描这个包下面的所有内容,包括子包。如果我们仅仅想让spring扫描特点的内容,可以进行配置。

        在xml中常用配置如下

        使用通配符 

    

         只扫描满足要求的类,下面表示只扫描以Dao结尾的类

    

         排除掉不想扫描的类

    
        
    

         解释一下,我们在下面可以使用标签,这个标签表示过滤一些不想让spring容器管理的类,type为过滤类型,有好几种,这里就是用的注解,后面的expression就是过滤表达式,由于前面设置的类型是注解,所以这里写注解的全路径就行,上面的配置就表示扫描spring包下面的所有内容,除了有@Service注解的。其他的方式就不做讲解了,感兴趣的自己去了解吧


注解配置Bean的名称

        我们在前面使用注解的时候,是直接就加一个注解,spring容器扫描后是按照类名首字母小写的方式来命名的,当然,我们肯定是可以自己进行设置的。先来看一下@Service的源代码

[spring学习]6、基于注解配置bean_第4张图片

         发现有一个value属性,这时,我们就能想到肯定是通过这个value属性来设置bean的名称,其他几个注解的源码也是差不多的,都有value,就是通过value来进行设置。

        我们将快速入门中的几个bean都设置一下名称,统一设置成为my+类目,设置如下

[spring学习]6、基于注解配置bean_第5张图片

[spring学习]6、基于注解配置bean_第6张图片

[spring学习]6、基于注解配置bean_第7张图片

[spring学习]6、基于注解配置bean_第8张图片

        当然,这个value可以不需要写,可以直接写名称,我们还是利用上面的测试方法,输出结果如下,设置成功

[spring学习]6、基于注解配置bean_第9张图片


总结

        在这篇文章中,讲解了基于注解配置bean的基础用法,至于spring为什么可以扫描到bean,应该是还比较模糊的,在下一篇文章中,我们将会手动实现一个我们自己的mySping,弄清楚spring到底是如何做到包扫描,已经如何创建bean的。

你可能感兴趣的:(spring,spring,学习,java)