基于注解管理Bean

注解在Java中用于标记,不直接执行,而是由框架检测并执行相应操作。Spring通过扫描指定包来发现@Component、@Controller、@Service、@Repository等注解,管理组件。这些注解在@Component基础上提供不同命名,方便代码组织。可以通过配置扫描排除或包含特定组件,bean的id默认为小驼峰命名,也可自定义。
摘要由CSDN通过智能技术生成

   和 XML 配置文件一样,注解本身并不能执行,注解本身仅仅只是做一个标记,

   具体的功能是框架检测到注解标记的位置,然后针对这个位置按照注解标记的

   功能来执行具体操作。

   本质上:所有一切的操作都是Java代码来完成的,

                XML和注解只是告诉框架中的Java代码如何执行。

举例:

元旦联欢会要布置教室,蓝色的地方贴上元旦快乐四个字,红色的地方贴上拉花,
黄色的地方贴上气球。
班长做了所有标记,同学们来完成具体工作。墙上的标记相当于我们在代码中使用的注解,后面同学们做的工作,相当于框架的具体操作。

Spring 为了知道程序员在哪些地方标记了什么注解,就需要通过扫描的方式,

来进行检测。然后根据注解进行后续操作。

标识组件的常用注解

  @Component:将类标识为普通组件

  @Controller:将类标识为控制层组件

  @Service:将类标识为业务层组件

  @Repository:将类标识为持久层组件

@Controller、@Service、@Repository
这三个注解只是在@Component注解的基础上起了三个新的名字。

  对于Spring使用IOC容器管理这些组件来说没有区别。

所以@Controller、@Service、@Repository这三个注解只是给开发人员看的,
让我们能够便于分辨组件的作用。

Controller控制层

@Controller
public class UserController {

}

service层

@Service
public class UserServiceImpl implements UserService {

}

dao层

@Repository
public class UserDaoImpl implements UserDao {

}

ApplicationContext.xml文件 注解标记后需要扫描

<!--
扫描组件:
  将扫描的包下面加上注解的这些类作为组件进行管理,在ioc容器中有了当前加上注解的类所对应的bean对象。
  -->
<context:component-scan base-package="com.atguigu.spring"></context:component-scan>

扫描组件

最基本的扫描方式


<context:component-scan base-package="com.atguigu.spring" use-default-filters="false">

指定要排除的组件

context:exclude-filter:排除扫描
type:设置排除扫描的方式
①annotation: 根据注解的类型进行排除,
②assignable:根据类的类型进行排除
expression设置排除注解的全类名 里面的地址:右击Copy/Paste Special Copey Reference

<context:component-scan base-package="com.atguigu.spring">
<!--根据注解-->
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<!--根据类的类型-->
   <context:exclude-filter type="assignable" expression="com.atguigu.spring.controller.UserController"/>

</context:component-scan>

 仅扫描指定组件

context:include-filter:包含扫描
注意:需要在context:component-scan标签中设置use-default-filters="false"
use-default-filters="true"(默认),就是所设置的包下的所有的类都需要扫描,
此时可以使用排除扫描。
use-default-filters="false":所设置的包下的所有的类都需不需要扫描,此时可以使用包含扫描
<context:component-scan base-package="com.atguigu.spring" use-default-filters="false">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>

</context:component-scan>

bean的id

通过注解+扫描所配置的bean的id,默认值为类的小驼峰,即类名首字母为小写的结果。
设置自定义id:通过标识组件的注解value属性值设置bean的自定义id。

例如:

@Controller("controller")
public class UserController {

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值