• Spring通过注解配置Bean


    @Component: 基本注解, 标识了一个受 Spring 管理的组件
    @Repository: 标识持久层组件
    @Service: 标识服务层(业务层)组件
    @Controller: 标识表现层组件

    配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <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-4.0.xsd">
    
        <!-- 配置自动扫描的包: 需要加入 aop 对应的 jar 包 -->
        <!-- 扫描此包及此包下的子包 -->
        <context:component-scan base-package="com.spring.annotation"></context:component-scan>
    
    </beans>

    demo

    package com.spring.annotation;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.stereotype.Controller;
    
    @Controller
    public class UserAction {
        
        /*默认情况下所有使用 @Authwired 注解的属性都需要被设置. 当 Spring 找不到匹配的 Bean 装配属性时,
        会抛出异常, 若某一属性允许不被设置, 可以设置 @Authwired 注解的 required 属性为 false
        默认情况下, 当 IOC 容器里存在多个类型兼容的 Bean 时, 通过类型的自动装配将无法工作. 
        此时可以在 @Qualifier 注解里提供 Bean 的名称. Spring 允许对方法的入参标注 
        @Qualifiter 已指定注入 Bean 的名称*/
        
        @Autowired(required=false)
        @Qualifier("usreService")
        private UsreService usreService;
        
        public void execute(){
            System.out.println("添加用户");
            usreService.add();
        }
        
    }
    
    
    package com.spring.annotation;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service
    public class UsreService {
        
        @Autowired
        private UserRepository userDao;
        
        public void add(){
            System.out.println("接收请求");
            userDao.save();
        }
        
    }
    
    
    
    package com.spring.annotation;
    
    import org.springframework.stereotype.Repository;
    
    @Repository
    public class UserRepository {
        
        public void save(){
            System.out.println("保存数据");
        }
        
    }
    View Code

     测试

    package com.spring.annotation;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class Main {
        
        public static void main(String[] args) {
            
            ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-annotation.xml");
            
            UserAction userAction = (UserAction) ctx.getBean("userAction");//默认Bean id为类名首字母小写
            userAction.execute();
        }
        
    }
    View Code
  • 相关阅读:
    非root用户在linux下安装多个版本的CUDA和cuDNN(cuda 8、cuda 10.1 等)
    python相关总结
    可视化滤波器
    Ubuntu 和windows程序区别
    远程服务器运行代码相关
    Ubuntu
    jmeter学习(1)基础支持+安装部署
    python中eval方法的使用
    mysql学习(4)python操作数据库
    mysql学习(3)10045错误,连接不上数据库
  • 原文地址:https://www.cnblogs.com/lusufei/p/7355812.html
Copyright © 2020-2023  润新知