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

有时候,不是因为你没有能力,也不是因为你缺少勇气,只是因为你付出的努力还太少,所以,成功便不会走向你。而你所需要做的,就是坚定你的梦想,你的目标,你的未来,然后以不达目的誓不罢休的那股劲,去付出你的努力,成功就会慢慢向你靠近。

导读:本篇文章讲解 [spring学习]6、基于注解配置bean,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

目录

前言

基本使用

快速入门

xml配置扫描包的一些方法

注解配置Bean的名称

总结


前言

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

基本使用

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

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

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

  • @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中配置如下 

    <context:component-scan base-package="com.ttfpx.spring.base"/>

        我的项目结构如下 

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

         在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

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


xml配置扫描包的一些方法

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

        在xml中常用配置如下

        使用通配符 

    <context:component-scan base-package="com.ttfpx.spring.*"/>

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

    <context:component-scan base-package="com.ttfpx.spring.*"
                            resource-pattern="*Dao.class"/>

         排除掉不想扫描的类

    <context:component-scan base-package="com.ttfpx.spring.*">
        <context:exclude-filter type="annotation" 
                                expression="org.springframework.stereotype.Service"/>
    </context:component-scan>

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


注解配置Bean的名称

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

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

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

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

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

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

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

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

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

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


总结

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/146312.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!