1.基于注解的配置:

@Component: 基本注解, 标识了一个受 Spring 管理的组件

@Respository: 标识持久层组件

@Service: 标识服务层(业务层)组件

@Controller: 标识表现层组件

将这些架包放入在工程目录下建立的lib文件夹里,并解压

commons-logging-1.1.1

spring-aop-4.0.0.RELEASE

spring-beans-4.0.0.RELEASE

spring-context-4.0.0.RELEASE

spring-core-4.0.0.RELEASE

spring-expression-4.0.0.RELEASE

---------------------------------------------------------------------------

建立接口:UserRepository

  1. package com.atguigu.spring.beans.annotation.test;
  2.  
  3. public interface UserRepository {
  4. void save();
  5. }

建立类:UserRepositoryImpl继承于接口:UserRepository

  1. package com.atguigu.spring.beans.annotation.test;
  2.  
  3. import org.springframework.stereotype.Repository;
  4.  
  5. @Repository("userRepository") //标识持久层组件
  6. public class UserRepositoryImpl implements UserRepository {
  7.  
  8. public void save() {
  9. System.out.println("panpan123");
  10. }
  11. }

建立类:UserService

  1. package com.atguigu.spring.beans.annotation.test;
  2.  
  3. import org.springframework.stereotype.Service;
  4.  
  5. @Service //标识服务层(业务层)组件
  6. public class UserService {
  7. public void add(){
  8. System.out.println("panpan456");
  9. }
  10. }

建立类:UserController

  1. package com.atguigu.spring.beans.annotation.test;
  2.  
  3. import org.springframework.stereotype.Controller;
  4.  
  5. @Controller //标识表现层组件
  6. public class UserController {
  7. public void test(){
  8. System.out.println("panpan789");
  9. }
  10. }

上述类都是建立在包com.atguigu.spring.beans.annotation.test之下;

spring的xml配置文件:beansannotation.xml,在com.atguigu.spring.beans.annotation.test包或子包 下带有上述四个注解的,可以被IOC容器识别

  1. <context:component-scan base-package="com.atguigu.spring.beans.annotation.test" >
  2. </context:component-scan>

加入resource-pattern="repository/*.class,是指识别repository注解的类;

  1. <context:component-scan base-package="com.atguigu.spring.beans.annotation.test" resource-pattern="repository/*.class">
  2. </context:component-scan>

注解过滤:指不包含 类型是 注解,导入的包(import后面的)是org.springframework.stereotype.Repository的类;

  1. <context:component-scan
  1. base-package="com.atguigu.spring.beans.annotation"
  2. <context:exclude-filter type="annotation"
  3. expression="org.springframework.stereotype.Repository"/>
  4. </context:component-scan>

取消默认的use-default-filters="false",包含...

  1. <context:component-scan
  1. base-package="com.atguigu.spring.beans.annotation" use-default-filters="false">
  2. <context:include-filter type="annotation"
  3. expression="org.springframework.stereotype.Repository"/>
  4. </context:component-scan>

类过滤:type="assignable",不包含全类名是com.atguigu.spring.beans.annotation.test.UserRepository

  1. <context:component-scan
  2. base-package="com.atguigu.spring.beans.annotation"
  3. <context:exclude-filter type="assignable" expression="com.atguigu.spring.beans.annotation.test.UserRepository"/>
  4. </context:component-scan>

类过滤:type="assignable",取消默认的use-default-filters="false",只包含全类名为com.atguigu.spring.beans.annotation.test.UserRepositoryImpl类

  1. <context:component-scan
  2. base-package="com.atguigu.spring.beans.annotation" use-default-filters="false">
  3. <context:exclude-filter type="assignable" expression="com.atguigu.spring.beans.annotation.test.UserRepositoryImpl"/>
  4. </context:component-scan>

建立Main类,进行测试:

  1. package com.atguigu.spring.beans.annotation.test;
  2.  
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;
  5.  
  6. public class Main {
  7.  
  8. public static void main(String[] args) {
  9.  
  10. ApplicationContext ctx=new ClassPathXmlApplicationContext("beansannotation.xml");
  11.  
  12. TestObject test=(TestObject) ctx.getBean("testObject");
  13. System.out.println(test);
  14.  
  15. UserController controller=(UserController) ctx.getBean("userController");
  16. System.out.println(controller);
  17.  
  18. UserService service=(UserService) ctx.getBean("userService");
  19. System.out.println(service);
  20.  
  21. UserRepositoryImpl repository=(UserRepositoryImpl) ctx.getBean("userRepository");
  22. System.out.println(repository);
  23. }
  24.  
  25. }

Spring框架bean的配置(3):基于注解的配置的更多相关文章

  1. Spring框架第四篇之基于注解的DI注入

    一.说明 与@Component注解功能相同,但意义不同的注解还有三个: 1)@Repository:注解在Dao实现类上 2)@Service:注解在Service实现类上 3)@Controlle ...

  2. (spring-第4回【IoC基础篇】)spring基于注解的配置

    基于XML的bean属性配置:bean的定义信息与bean的实现类是分离的. 基于注解的配置:bean的定义信息是通过在bean实现类上标注注解实现. 也就是说,加了注解,相当于在XML中配置了,一样 ...

  3. Spring IoC — 基于注解的配置

    基于XML的配置,Bean定义信息和Bean实现类本身是分离的,而采用基于注解的配置方式时,Bean定义信息即通过在Bean实现类上标注注解实现. @Component:对类进行标注,Spring容器 ...

  4. Spring 基于注解零配置开发

    本文是转载文章,感觉比较好,如有侵权,请联系本人,我将及时删除. 原文网址:< Spring 基于注解零配置开发 > 一:搜索Bean 再也不用在XML文件里写什么配置信息了. Sprin ...

  5. Spring boot 基于注解方式配置datasource

    Spring boot 基于注解方式配置datasource 编辑 ​ Xml配置 我们先来回顾下,使用xml配置数据源. 步骤: 先加载数据库相关配置文件; 配置数据源; 配置sqlSessionF ...

  6. Spring基于注解@Required配置

    基于注解的配置 从 Spring 2.5 开始就可以使用注解来配置依赖注入.而不是采用 XML 来描述一个 bean 连线,你可以使用相关类,方法或字段声明的注解,将 bean 配置移动到组件类本身. ...

  7. Spring 基于注解的配置 简介

    基于注解的配置 从 Spring 2.5 开始就可以使用注解来配置依赖注入.而不是采用 XML 来描述一个 bean 连线,你可以使用相关类,方法或字段声明的注解,将 bean 配置移动到组件类本身. ...

  8. Spring声明式事务管理(基于注解方式实现)

    ----------------------siwuxie095                                 Spring 声明式事务管理(基于注解方式实现)         以转 ...

  9. 解决Spring框架的Dao层改用@Repository注解,无法使用JdbcDaoSupport的问题

    解决Spring框架的Dao层改用@Repository注解,无法使用JdbcDaoSupport的问题 Alternatively, create an own implementation of ...

随机推荐

  1. Oracle 11g RAC 第二节点root.sh执行失败后再次执行root.sh

    Oracle 11g RAC 第二节点root.sh执行失败后再次执行root.sh前,要先清除之前的crs配置信息 # /u01/app/11.2.0/grid/crs/install/rootcr ...

  2. EF Code First DataAnnotations

    Key EF框架要求每个实体必须有主键字段,他需要根据这个主键字段跟踪实体.CodeFirst方法在创建实体时,也必须指定主键字段,默认情况下属性被命名为ID.id或者[ClassName]Id,将映 ...

  3. Java类加载器深入探索

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 什么是.class文件? class文件全名称为Java class文件,主要在平台无关性和网 ...

  4. Swift实战-豆瓣电台(九)简单手势控制暂停播放(全文完)

    Swift实战-豆瓣电台(九)简单手势控制暂停播放 全屏清晰观看地址:http://www.tudou.com/programs/view/tANnovvxR8U/ 这节我们主要讲UITapGestu ...

  5. [原创]java WEB学习笔记76:Hibernate学习之路---Hibernate介绍,hibernate 环境的搭建

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  6. 数据库SQL 查询

    查询 1.简单查询 select * from info(表名)   --查所有数据 select  code(列名),name(列名)  from 表名        --查指定列的数据 selec ...

  7. .net 网站预编译命令

    aspnet_compiler -v /Aspnet  -p "C:\inetpub\wwwroot\a"  C:\inetpub\wwwroot\a2 /Aspnet   iis ...

  8. 夺命雷公狗---Thinkphp----1之目录介绍

    ThinkPHP框架 特点: 免费开源 敏捷开发(快速开发) 面向对象 MVC思想 yii,ci之类的框架都有这些特点.是06年到现在的一个老牌框架,现在还是个很不错的框架 可以在thinkphp的官 ...

  9. Unable to find the wrapper "https"错误的解决办法

    PHP.ini默认配置下,用file_get_contents读取https的链接,就会如下错误:Warning: fopen() [function.fopen]: Unable to find t ...

  10. SIFT算法详解(转)

    http://blog.csdn.net/zddblog/article/details/7521424 目录(?)[-] 尺度不变特征变换匹配算法详解 Scale Invariant Feature ...