目录
前言
在这篇文章中,将会使用注解的方式类配置bean,注解相对于xml配置,更加的简洁,个人比较喜欢使用注解,现在的主流也是注解配置,下面就来介绍下常见的配置吧
基本使用
在使用注解配置之前,要在前面的jar包的基础之上额外添加一个jar包,如下
这里先来介绍一下基本的几个注解
- @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"/>
我的项目结构如下
在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成功将我们配置的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的源代码
发现有一个value属性,这时,我们就能想到肯定是通过这个value属性来设置bean的名称,其他几个注解的源码也是差不多的,都有value,就是通过value来进行设置。
我们将快速入门中的几个bean都设置一下名称,统一设置成为my+类目,设置如下
当然,这个value可以不需要写,可以直接写名称,我们还是利用上面的测试方法,输出结果如下,设置成功
总结
在这篇文章中,讲解了基于注解配置bean的基础用法,至于spring为什么可以扫描到bean,应该是还比较模糊的,在下一篇文章中,我们将会手动实现一个我们自己的mySping,弄清楚spring到底是如何做到包扫描,已经如何创建bean的。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74836.html