文档章节

spring概念简介、bean扫描与注册实现方式

商者
 商者
发布于 2017/07/25 21:04
字数 984
阅读 6
收藏 0

写在前面:本文作为整理,包含很多个人理解,有跳跃成份,初学者如果看晕了,可以先看其它同类文章,或者……多看几遍。

一、概念部分:

1、spring概念:网上有很多

2、spring核心:IOC(DI)和AOP

3、IOC:控制反转,控制权的转移,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护,只是负责使用

解释一下就是:原来你在A类里面使用B类,需要new B(),现在不用new了,new对象的过程交给外部容器(Spring容器,它把所有的对象都称作为Bean)实现控制权转移,A类只是负责使用

4、DI:依赖注入,是IOC的一种实现方式,目的:创建对象并且组装对象之间的关系

5、创建对象并且组装对象之间的关系,这是两个过程: 
1)、创建对象可以称为bean的扫描、注册,可通过xml配置和注解两种方式实现 
2)、组装对象之间的依赖关系称为注入,注入方式一般分为:setter注入和构造器注入,依据形式不同又分为xml配置注入、xml配置自动装配、注解自动装配

6、AOP:面向切面编程,具体概念略,实现看后续整理

二、bean的扫描、注册

1、xml配置(schema)方式,手动扫描

复制代码

<?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:p="http://www.springframework.org/schema/p" 
        xmlns:aop="http://www.springframework.org/schema/aop" 
        xmlns:tx="http://www.springframework.org/schema/tx" 
       xmlns:mvc="http://www.springframework.org/schema/mvc"     xmlns:context="http://www.springframework.org/schema/context"     xsi:schemaLocation="http://www.springframework.org/schema/beans                        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd                       http://www.springframework.org/schema/context                        http://www.springframework.org/schema/context/spring-context-3.0.xsd                           http://www.springframework.org/schema/aop                      http://www.springframework.org/schema/aop/spring-aop-3.0.xsd                           http://www.springframework.org/schema/tx                        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd                          http://www.springframework.org/schema/mvc                        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 

    <!-- 定义注册User的bean,唯一名称为user -->
    <bean id="user" class="com.test.User"></bean>

    <!-- 定义注册Dept的bean,唯一名称为dept -->
    <bean name="dept" class="com.test.Dept"></bean>

</beans>

复制代码

2、注解方式,自动扫描

1)、现在spring的xml文件中开启注解扫描以及配置扫描的范围:<context:component-scan base-package="">标签

<context:component-scan base-package="com.test"></context:component-scan>
  • 1

添加扫描过滤:

<context:component-scan base-package="com.test">
    <!-- 只扫描com.test包及子包下的注解为Service的类,而过滤注解为Controller的类 -->
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/>
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

 

延伸部分:在spring中,<context:annotation-config/>标签作用也是开启注解,它与<context:component-scan/>标签的区别是什么(还有一个’’)???

<context:annotation-config/> 标签告诉Spring到bean类中寻找一些annotation定义的类, 比如@Autowired @PostConstruct @PreDestroy @Resource 等。 
需要注意的是它并没有激活@Transactional 和 @TransactionAttribute

<context:component-scan/>标签告诉Spring搜索指定包下面以及一些需要被自动注入的bean,比如@Component @Repository @Service @Controller,而<context:component-scan>标签功能包含<context:annotation-config>的功能。

<mvc:annotation-driven/>这个标签的作用之一就是在springMVC中告诉Spring去检测RequestMapping。其他的作用如下: 
- 激活@ExceptionHandler这个annotation 
- 配置了这个标签还可以将RequestMappingHandlerAdapter注册到Spring中 
- 是SpringMVC提供默认的类型转化,因为我们没有在<mvc:annotation-driven/> 的属性中配置ConversionService


2)、注解bean,以便被Spring容器扫描并实现bean注册

在类上添加@Component,@Repository,@Service,@Controller等注解,其中:

@Component是一个通用注解,可用于任何bean
@Repository,@Service,@Controller是更有针对性的注解
@Repository通常用于注解DAO类,即持久层
@Service通常用于注解Service类,即服务层
@Controller通常用于Controller类,即控制层(MVC)
@Controller
public class TestAnnotationController {...}


注意:注解方式bean的名称可以在注解时手动指定,比如@Controller(“testAnnotationController”),如果不指定则bean名称是由BeanNameGenerator生成的,格式为类名称首字母小写其它不变

本文转载自:

共有 人打赏支持
商者

商者

粉丝 41
博文 141
码字总数 43255
作品 0
海淀
架构师
spring梳理(二) 基于注解的方式注册bean

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

wyn_lin
05/25
0
0
SpringBoot的幕后推手...

一、背景   这两年随着微服务的盛行,SpringBoot框架水到渠成的得到了高曝光,作为程序猿的我们,现在要是不知道一点SpringBoot相关的东西,貌似出去找工作都会被深深地鄙视,不过在我们开...

Java工程师-Distance
06/01
0
0
Spring与SpringMVC的容器关系分析

Spring与SpringMVC的容器关系分析 结论: Spring(springContext.xml)容器配置,排除所有@controller 的Bean <context:component-scan base-package="com.service,com.util,com.dao" > Spri......

LYQ1990
2016/05/24
92
0
@Repository、@Service、@Controller 和 @Component

@Repository、@Service、@Controller 和 @Component 将类标识为Bean Spring 自 2.0 版本开始,陆续引入了一些注解用于简化 Spring 的开发。@Repository注解便属于最先引入的一批,它用于将数...

Orehs
2014/08/07
0
0
Spring对注解(Annotation)处理源码分析1——扫描和读取Bean定义

1.从Spring2.0以后的版本中,Spring也引入了基于注解(Annotation)方式的配置,注解(Annotation)是JDK1.5中引入的一个新特性,用于简化Bean的配置,某些场合可以取代XML配置文件。开发人员对注...

李长春
2011/10/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

腾讯三大运维开源项目齐聚“OSCAR开源先锋日”

10月20日,腾讯开源三大运维开源项目——TARS、蓝鲸和织云Metis首次集结,参与了由中国信息通信研究院主办、云计算标准与开源推进委员会承办的 “OSCAR开源先锋日”。会上,腾讯开源团队与前...

腾讯开源
20分钟前
1
0
JAVA并发-从缓存一致性说volatile 讲的很好

学过计算机组成原理的一定知道,为了解决内存速度跟不上CPU速度这个问题,在CPU的设计中加入了缓存机制,缓存的速度介于CPU和主存之间。在进行运算的时候,CPU将需要的数据映射一份在缓存中,...

码代码的小司机
38分钟前
1
0
IDEA 调试功能

1.设置断点 选定要设置断点的代码行,在行号的区域后面单击鼠标左键即可。 2.开启调试会话 点击红色箭头指向的小虫子,开始进入调试。 IDE下方出现Debug视图,红色的箭头指向的是现在调试程序...

狼王黄师傅
46分钟前
1
0
Java面试170题

1、面向对象的特征有哪些方面? 2、访问修饰符public,private,protected,以及不写(默认)时的区别? 3、String 是最基本的数据类型吗? 4、float f=3.4;是否正确? 5、short s1 = 1; s1 = ...

lanyu96
51分钟前
0
0
优雅的写出类

前言 虽然现在已经是ES6的时代,但是,还是有必要了解下ES5是怎么写一个类的。 本文详述JavaScript面向对象编程中的类写法,并分步骤讲述如何写出优雅的类。 一、例子 例子为一个轻提示组件T...

peakedness丶
56分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部