spring包扫描和工程配置

spring是一个模块化的东西,本质上是管理对象的定义及对象之间的关系

方法一:定义bean

这种方法是使用XML的bean来定义配置组件,但在一个稍微大一点的项目中,通常会有几百个组件需要管理,如果这些组件通过xml的bean定义来配置,维护会比较麻烦,配置文件的体积也会增加,这时候就需要用方法二

方法二:基于包的扫描

spring引入了包的自动扫描机制, 它可以在类路径下寻找标注了@Component、@Service、@Controller、@Repository注解的类,并把这些类纳入进Spring容器中管理。它的作用和在xml文件中使用bean配置组件是一样的。

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="com.testfan.spring.ioc" />
</beans>

base-package为需要扫描的包

在xml配置文件中配置了这个标签后,spring就可以自动扫描base-package下面或者子包下面的java文件,如果有扫描到@Component、@Service、@Controller、@Repository等注解的类,就把这些类注册为bean

<context:component-scan>有一个use-default-filters属性,该属性默认为true。

<use-default-filters>为true时:
会对base-package包或者子包下的所有的进行java类进行扫描,并把匹配的java类注册成bean。

<use-default-filters>为false时:
<context:exclude-filter>指定的不扫描
<context:include-filter>指定的扫描

常用注解
对象获取:
1、@Autowired(byType–class)

@Autowired默认按类型匹配的方式,在容器查找匹配的Bean,当有且仅有一个匹配的Bean时,Spring将其注入@Autowired标注的变量中。

2、@Resource(byId/name)

@Resource后面没有任何内容,默认通过name属性去匹配bean,找不到再按type去匹配

包扫描:
1、@Component

@Component是所有受Spring 管理组件的通用形式,@Component注解可以放在类的头上,@Component不推荐使用。

2、@Controller

@Controller对应表现层的Bean,也就是Action

3、@Service

@Service对应的是业务层Bean

4、@Repository

@Repository对应数据访问层Bean

常用注解汇总:
@Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。
@Scope注解 作用域
@Lazy(true) 表示延迟初始化
@Service用于标注业务层组件、
@Controller用于标注控制层组件(如struts中的action)
@Repository用于标注数据访问组件,即DAO组件。
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
@Scope用于指定scope作用域的(用在类上)
@PostConstruct用于指定初始化方法(用在方法上)
@PreDestory用于指定销毁方法(用在方法上)
@DependsOn:定义Bean初始化及销毁时的顺序
@Primary:自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
@Autowired 默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:
@Autowired @Qualifier(“personDaoBean”) 存在多个实例配合使用
@Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。
@PostConstruct 初始化注解
@PreDestroy 摧毁注解 默认 单例 启动就加载
@Async异步方法调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值