基于注解方式配置bean

基于注解方式配置bean

● 基本介绍
基于注解的方式配置 bean, 主要是项目开发中的组件,比如 Controller、Service、和 Dao.
● 组件注解的形式有
1. @Component 表示当前注解标识的是一个组件
2. @Controller 表示当前注解标识的是一个控制器,通常用于 Servlet
3. @Service 表示当前注解标识的是一个处理业务逻辑的类,通常用于 Service 类
4. @Repository 表示当前注解标识的是一个持久化层的类,通常用于 Dao 类
● 代码实现
1. 引入 spring-aop-5.3.8.jar , 在 spring/libs 下拷贝即可
创建 UserAction.java UserService.java, UserDao.java MyComponent.java

 

 配置xml文件

复制代码
<!-- 配置自动扫描的包,注意需要加入 context 名称空间 -->
        <!--注意事项:
        1.如果想扫描一个大包下的多个子包可以使用通配符*,如com.recorder.spring.*
        2.配置的包会扫描这个包下的类以及这个包下的子包的类(带注解的)
        3. Spring 的 IOC 容器不能检测一个使用了@Controller 注解的类到底是不是一个真正的控制器。
        注解的名称是用于程序员自己识别当前标识的是什么组件。其它的@Service @Repository 等
        也是一样的道理 [也就是说 spring 的 IOC 容器只要检查到注解就会生成对象,
        但是这个注解的含义 spring 不会识别,注解是给程序员编程方便看的]
        4.resource-pattern="User*.class": 表示只扫描满足要求的类(User开头的).[使用的少,不想扫描,不写注解就可以, 知道这个知识点即可]
      这里因为是用的是out目录下面的.class文件

5.排除哪些类 , 以 annotaion 注解为例: <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/> 解读 :1) <context:exclude-filter> 放在<context:component-scan>内,表示扫描过滤掉当前包的某些类 2) type="annotation" 按照注解类型进行过滤 3) expression :就是注解的全类名,比如 org.springframework.stereotype.Service 就是 @Service 注解的全类名,@Controller/@Repository等依次类推 4) 上面表示过滤掉 com.recorder.spring.component包下,所有加入了@Service 注解的类
--> <!--<context:component-scan base-package="com.recorder.spring.component">--> <!-- <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>--> <!--</context:component-scan> 6. 指定自动扫描哪些注解类 解读 1) use-default-filters="false": 不再使用默认的过滤机制 2) context:include-filter: 表示只是扫描指定的注解的类 3) expression="org.springframework.stereotype.Controller": 注解的全类名 --> <!--<context:component-scan base-package="com.recorder.spring.component" use-default-filters="false">--> <!-- <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>--> <!--</context:component-scan>--> <context:component-scan base-package="com.recorder.spring.component"/>
复制代码

测试

复制代码
 @Test
    //通过自动装配获取bean
    public void setBeanByAutoWire() {
        //创建一个容器,并和配置文件关联(一个容器关联一个配置文件)
        ApplicationContext ioc = new ClassPathXmlApplicationContext("beans.xml");
        OrderAction orderAction = ioc.getBean("orderAction", OrderAction.class);
        System.out.println(orderAction.getOrderService());
        System.out.println(orderAction.getOrderService().getOrderDao());


    }
复制代码

 

 

 

posted @   紫英626  阅读(204)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现

紫英

点击右上角即可分享
微信分享提示