109、【JavaEE】【Spring】Spring 注解开发(

2021-10-24  本文已影响0人  yscyber

1、概述

2、Spring 中常见注解

Spring-22

3、使用注解开发举例

<?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 https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

     <!-- 开启“注解扫描”,使得 Spring 能够识别该包下注解 --->
    <context:component-scan base-package="com.yscyber.spring"/>

</beans>
public interface UserRepo {

    int deleteUserById(String id);

}
import com.yscyber.spring.two.repo.UserRepo;

import org.springframework.stereotype.Repository;

@Repository
public class UserRepoImpl implements UserRepo {

    @Override
    public int deleteUserById(String id) {
        System.out.println("删除用户...");
        return 1;
    }

}
public interface UserService {

    int deleteUserById(String id);

}
import com.yscyber.spring.two.repo.UserRepo;
import com.yscyber.spring.two.service.UserService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserRepo userRepo;

    @Override
    public int deleteUserById(String id) {
        return userRepo.deleteUserById(id);
    }

}
    @Test
    public void test1() {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");

        UserService userService = applicationContext.getBean(UserService.class);

        userService.deleteUserById("1");
    }

4、控制反转使用的注解

5、依赖注入使用的注解

public interface UserRepo {

    int deleteUserById(String id);

}
import com.yscyber.spring.three.repo.UserRepo;

import org.springframework.stereotype.Repository;

@Repository("userRepoImpl1")
public class UserRepoImpl1 implements UserRepo {

    @Override
    public int deleteUserById(String id) {
        System.out.println("实现类1");
        return 1;
    }

}
import com.yscyber.spring.three.repo.UserRepo;

import org.springframework.stereotype.Repository;

@Repository("userRepoImpl2")
public class UserRepoImpl2 implements UserRepo {

    @Override
    public int deleteUserById(String id) {
        System.out.println("实现类2");
        return 1;
    }

}
public interface UserService {

    int deleteUserById(String id);

}
import com.yscyber.spring.three.repo.UserRepo;
import com.yscyber.spring.three.service.UserService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    @Qualifier("userRepoImpl2") // 使用 @Qualifier 区分到底注入的是 UserRepoImpl1 还是 UserRepoImpl2
    private UserRepo userRepo;

    @Override
    public int deleteUserById(String id) {
        return userRepo.deleteUserById(id);
    }

}
<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.2</version>
</dependency>
import com.yscyber.spring.three.repo.UserRepo;
import com.yscyber.spring.three.service.UserService;

import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
public class UserServiceImpl implements UserService {

    @Resource(name = "userRepoImpl2") // 替代 @Autowired 和 @Qualifier("······") 
    private UserRepo userRepo;

    @Override
    public int deleteUserById(String id) {
        return userRepo.deleteUserById(id);
    }

}
上一篇 下一篇

猜你喜欢

热点阅读