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;
    }
}

 

原文地址:https://www.cnblogs.com/oscar1987121/p/10879742.html