zoukankan      html  css  js  c++  java
  • Spring

    1. 介绍

    之前我们写的bean都是基于xml配置,而这文章是基于java 注解去实现创建bean,首先我们需要在之前的xml当中添加两个dtd

    xmlns:context 和 xsi:schemaLocation

    <?xml version="1.0" encoding="UTF-8" ?>
    <beans   xmlns="http://www.springframework.org/schema/beans" 
             xmlns:context="http://www.springframework.org/schema/context"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.springframework.org/schema/beans 
             http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
             http://www.springframework.org/schema/context
             http://www.springframework.org/schema/context/spring-context.xsd">
            
         
    </beans>

    2.配置

    只要对你需要添加注解创建bean的包进行扫描就可以了

    <context:component-scan> 其中属性,base-package就写需要扫描的包全限路径即可

    <?xml version="1.0" encoding="UTF-8" ?>
    <beans   xmlns="http://www.springframework.org/schema/beans" 
             xmlns:context="http://www.springframework.org/schema/context"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.springframework.org/schema/beans 
             http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
             http://www.springframework.org/schema/context
             http://www.springframework.org/schema/context/spring-context.xsd">
            
        <context:component-scan base-package="com.test.spring.annotation"></context:component-scan>    
         
    </beans>

    3.注解讲解

    • 创建基本bean: @Component, 以下三种类型跟Component一样,只是叫法不一样而已
      • @Service
      • @Controller
      • @Repository

      注入:三种不同的注入方式
      • @Autowired:以类型注入,意思就注入相同类型的实现类,这会有缺点,就会当有多个实现了相同接口的对象,就不知道注入谁了

      • @Autowired+@Qualifier: 就是制定那个实现bean注入

      • @Resource: 已名称注入

      • 第四种是可以在setter方法上使用以上三种注解

    • 设普通值:@Value

    完整类

    @Component("userService")
    public class UserServiceImpl implements UserService{
    
        /**
         * 第一种方式 注入
         */
        @Autowired
        private UserDao userDao_1;
        
        /**
         * 第二种方式 注入
         */
        @Autowired
        @Qualifier("userDao")
        private UserDao userDao_2;
        
        /**
         * 第三种方式 注入
         */
        @Resource("userDao")
        private UserDao userDao_3;
        
        
        private UserDao userDao_4;
        
        /**
         * 第四种方式 注入
         */
        @Autowired
        @Qualifier("userDao")
        public void setUserDao_4(UserDao userDao_4) {
            this.userDao_4 = userDao_4;
        }
        
        /**
         * 基本类型
         */
        @Value("Peter")
        public String name;
        
        public void addUser() {
            userDao_1.saveUser();
            
            userDao_2.saveUser();
            
            userDao_3.saveUser();
            
            userDao_4.saveUser();
        }
    
        public String toString() {
            return name;
        }
    }

     

  • 相关阅读:
    错误:严重: Servlet.service() for servlet [appServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is
    转 File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:
    【转】C++和Java比较
    org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'xxxx' is not present
    Leetcode 423. Reconstruct Original Digits from English
    Maven中打包scope为system的Jar包
    Oracle常用函数和注意事项
    Vue中组件之间数据通信
    Vue中data数据响应问题
    JAVA爬虫对font-face字体反爬虫解密
  • 原文地址:https://www.cnblogs.com/oscar1987121/p/10879742.html
Copyright © 2011-2022 走看看