使用@Repository、@Service、@Controller注解配置,使其更加清晰属于哪一层,因为我是模拟的web层,所有没有使用@Controller注解,后面结合web开发会使用到

1.创建UserDao接口及其实现类UserDaoImpl(接口代码省略)

//<bean id="userDao" class="com.hao.dao.impl.UserDaoImpl"></bean>
@Repository("userDao")
public class UserDaoImpl implements UserDao {

    @Override
    public void save1() {
        System.out.println("save running...");
    }
}

2.创建UserService接口及其实现类UserServiceImpl(接口代码省略)

//<bean id="userService" class="com.hao.service.impl.UserServiceImpl">
@Service("userService")
public class UserServiceImpl implements UserService {
    // <property name="userDao" ref="userDao"/>
    @Autowired  //按照类型从spirng容器中进行匹配的
    //@Qualifier("userDao") //按照id值从容器中进行匹配的,但是@Qualifier结合@Autowired一起使用
    private UserDao userDao;
    
    @Override
    public void sava() {
        userDao.save1();
    }
}

注意点1:可以省略set方法
注意点2:@Qualifier注解可以省略,spring会尝试从容器中找一个UserDao的bean实例,找到后直接就注入到该地方;但是如果容器当中UserDao有多个bean实例,然后它就不知道该注入哪个bean了,所以此时要加上@Qualifier注解进行id标识说明
@Qualifier是按照id值从容器中进行匹配的,但是@Qualifier必须要结合@Autowired进行使用


#然后可以不使用这两个注解,单独使用一个@Resource(name=“id值”)


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

<!--    配置组件扫描-->
<!--    spring会扫描hao包下的所有子包和该包下的所有类-->
    <context:component-scan base-package="com.hao"/>
</beans>

4.模拟web层进行测试

public class UserController {
    public static void main(String[] args) {
        ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
        UserService service = (UserService) context.getBean("userService");
        service.sava();
    }
}

结果:sava running . . .

posted on 2020-11-14 18:29  凸凸大军的一员  阅读(40)  评论(0编辑  收藏  举报