文档章节

spring--(13)基于注解的方式配置bean

求是科技
 求是科技
发布于 2016/08/29 09:40
字数 738
阅读 19
收藏 0

spring中配置bean的方式有三种:
1>通过工厂方法
2>通过factoryBean方法配置
3>通过注解的方式配置
由于在开发中注解的方式使用得最多,因此,这里仅仅介绍注解的方式。
spring可以自动扫描classpath下特定注解的组件,组件包括:
@Component:基本组件,标识一个受spring管理的组件,可以应用于任何层次
@Repository:标识持久层组件,表示数据库访问
@Service:标识业务层组件
@Controller:标识控制层组件
对于扫描到的组件,spring有默认的命名规则,即类名的首字母小写;当然也可以在注解中通过使用value属性值标识组件的名称。
举例,如下两种形式是一样的
//1.注解方式配置bean

@Service
public class Address {
	private String city;
	private String street;
}

//2.xml方式配置bean

	<bean id="address" class="com.test.autowired.Address">
	</bean>

当在工程中的某些类上使用了注解后,需要在spring的配置文件中声明context:component-scan
1>base-package:指定一个需要扫描的基类包,spring容器会扫描这个基类包及其所有的子包里面的所有类。
2>当需要扫描多个包时,可以使用逗号分隔。
3>如果仅仅希望扫描指定包下面部分的类,而不是所有的类,可以使用resource-pattern属性过滤特定的类。
示例1:扫描com.test.annotation和com.test.autowired两个包及其子包下面所有的class
xml文件如下

	<!-- 扫描com.test.annotation包和com.test.autowired包及其子包所有的类   -->
	<context:component-scan base-package="com.test.annotation,com.test.autowired">
	</context:component-scan>

示例2:扫描com.test.annotation包下子包repository下所有的类
xml配置文件如下

	<!-- 扫描com.test.annotation包下子包repository下所有的类 -->
	<context:component-scan base-package="com.test.annotation"
	resource-pattern="repository/*.class">
	</context:component-scan>

示例3:不包含某些子节点(方式一:按照注解来包含与排除)

	<!-- 扫描com.test.annotation包下所有的类,排除@Repository注解(其他注解类似) -->
	<context:component-scan base-package="com.test.annotation">
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
	</context:component-scan>

示例4:只包含某些子节点(方式一:按照注解来包含与排除)

	<!-- 扫描com.test.annotation包下所有的类,只包含@Repository注解(其他注解类似) -->
	<!-- 注意:此时需要设置use-default-filters="false",false表示按照下面的过滤器来执行;true表示按照默认的过滤器来执行 -->
	<context:component-scan base-package="com.test.annotation" use-default-filters="false">
		<context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
	</context:component-scan>

示例5:不包含某些子节点(方式二:按照类名/接口名来包含与排除)

	<!-- 扫描com.test.annotation包下所有的类,不包含UserService接口及其所有实现类 -->
	<context:component-scan base-package="com.test.annotation">
		<context:exclude-filter type="assignable" expression="com.test.annotation.service.UserService"/>
	</context:component-scan>

示例6:只包含某些子节点(方式二:按照类名/接口名来包含与排除)

	<!-- 扫描com.test.annotation包下所有的类,只包含UserRepository接口及其所有实现类 -->
	<context:component-scan base-package="com.test.annotation" use-default-filters="false">
		<context:include-filter type="assignable" expression="com.test.annotation.repository.UserRepository"/>
	</context:component-scan>

© 著作权归作者所有

求是科技

求是科技

粉丝 100
博文 455
码字总数 238876
作品 0
成都
后端工程师
私信 提问
Spring高频面试题,你能答的上哪些?(高级篇)

1、什么是 Spring 框架?Spring 框架有哪些主要模块? 2、使用 Spring 框架能带来哪些好处? 3、什么是控制反转(IOC)?什么是依赖注入? 4、请解释下 Spring 框架中的 IoC? 5、BeanFactory...

Java架构
07/25
0
0
Spring面试题(70道,史上最全)

1.什么是spring? 2.使用Spring框架的好处是什么? 3.Spring由哪些模块组成? 4.核心容器(应用上下文)模块。 5.BeanFactory–BeanFactory实现举例。 6.XMLBeanFactory 7.解释AOP模块 8.解释J...

java技术栈
2017/11/08
0
0
Spring面试问答Top 25

本人收集了一些在大家在面试时被经常问及的关于Spring的主要问题,这些问题有可能在你下次面试时就会被问到。对于本文中未提及的Spring其他模块,我会单独分享面试的问题和答案。 欢迎大家向...

赵小宾
2015/05/04
270
1
Spring之Bean的配置方式

在博客中为了演示容器Bean实例化时暴露出的几个接口,将UserBean配置在XML中,其实常见的Bean的配置有3种。1.基于xml配置Bean 2.使用注解定义Bean 3.基于java类提供Bean定义信息。 一、基于x...

社会主义接班人
2018/08/19
0
0
spring梳理(二) 基于注解的方式注册bean

我们知道,如果想要将bean交由spring容器管理,就需要首先将bean注册在spring容器中,而bean可以通过xml或者注解的方式进行注册,基于xml的配置一般是通过、等xml标签进行配置,然后由sprin...

wyn_lin
2018/05/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

观点 | 用 MySQL 数据库,到底会不会被“卡脖子”?

>作者:明溪源 **用 MySQL 数据库,到底会不会被“卡脖子”?** 在近期不明朗的贸易形势下,一些正在规划数据库选型、迁移的用户,纷纷询问我们对 MySQL 未来前景的看法。那么使用 MySQL 数据...

爱可生
32分钟前
10
0
千万级流量架构下的负载均衡解析

一、负载均衡 负载均衡算法 转发实现 二、集群下的 Session 管理 Sticky Session Session Replication Session Server 一、负载均衡 集群中的应用服务器(节点)通常被设计成无状态,用户可以...

李红欧巴
35分钟前
78
0
一元建站-基于函数计算 + wordpress 构建 serverless 网站

前言 本文旨在通过 快速部署一个 wordpress 网站到阿里云函数计算平台 这个示例来展示 serverless web 新的开发模式, 包括 FUN 工具一键初始化 NAS, 同步网站到 NAS, 一键部署等能力, 展现函...

阿里云官方博客
37分钟前
5
0
Spring Security 整合JWT(四)

一、前言 本篇文章将讲述Spring Security 简单整合JWT 处理认证授权 基本环境 spring-boot 2.1.8 mybatis-plus 2.2.0 mysql 数据库 maven项目 Spring Security入门学习可参考之前文章: Spri...

郑清
38分钟前
8
0
零基础怎么玩转可视化大屏?这个工具只需5步!

大屏可视化怎么这么火?领导天天要,业务人员、开发人员、IT页面师就得一块熬夜加班,要是不会做大屏,都不好意思说自己做报表、做IT。 也许有人会告诉你,可视化大屏可以用JS+Ecahrts编程实...

朕想上头条
40分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部