• Spring框架bean的配置(3):基于注解的配置


    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

    package com.atguigu.spring.beans.annotation.test;
    
    public interface UserRepository {
        void save();
    }

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

    package com.atguigu.spring.beans.annotation.test;
    
    import org.springframework.stereotype.Repository;
    
    @Repository("userRepository") //标识持久层组件
    public class UserRepositoryImpl implements UserRepository {
    
        public void save() {
            System.out.println("panpan123");
        }
    }

    建立类:UserService

    package com.atguigu.spring.beans.annotation.test;
    
    import org.springframework.stereotype.Service;
    
    @Service  //标识服务层(业务层)组件
    public class UserService {
        public void add(){
            System.out.println("panpan456");
        }
    }

    建立类:UserController

    package com.atguigu.spring.beans.annotation.test;
    
    import org.springframework.stereotype.Controller;
    
    @Controller  //标识表现层组件
    public class UserController {
        public void test(){
            System.out.println("panpan789");
        }
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

    建立Main类,进行测试:

    package com.atguigu.spring.beans.annotation.test;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class Main {
        
        public static void main(String[] args) {
        
            ApplicationContext ctx=new ClassPathXmlApplicationContext("beansannotation.xml");
            
            TestObject test=(TestObject) ctx.getBean("testObject");
            System.out.println(test);
            
            UserController controller=(UserController) ctx.getBean("userController");
            System.out.println(controller);
            
            UserService service=(UserService) ctx.getBean("userService");
            System.out.println(service);
            
            UserRepositoryImpl repository=(UserRepositoryImpl) ctx.getBean("userRepository");
            System.out.println(repository);
        }
        
        
    }
  • 相关阅读:
    关于eclipse 的 web.xml文件 There is '1' error in 'j2ee_1_4.xsd'. 错误
    C#实现Java的AES加密解密算法
    jsp页面报错javax.servlet.jsp.jspException cannot be resolved to a type
    Ubuntu下查看jdk安装路径
    【Mysql】启动mysql报错mysqld_safe error: log-error set to /var/log/mariadb/mariadb.log
    spring mvc导出csv案例
    MyBatis 调用存储过程(详解)
    mysql 无限递归出现 data too long for column 'xxx' 错误
    java的maven项目头上有红叉解决方法
    Nexus3搭建Docker等私服
  • 原文地址:https://www.cnblogs.com/lxnlxn/p/5866479.html
Copyright © 2020-2023  润新知