spring基于注解的包扫描

本文介绍了Spring的三层架构——Controller、Service和DAO,并强调在Controller中应注入Service的实现类,Service层注入DAO实现类。通过配置XML文件和使用注解,可以实现包扫描,便于IOC容器管理Bean。示例代码包括UserController、UserDao、UserServiceImpl和UserService的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 spring的三层架构:controller,service ,dao,我们在编写代码的过程中应该是这样的,在controller层注入service的实现类,不能注入接口,在service层注入dao层的实现类,创建配置文件,通过ioc容器获取对应的bean.

 这是项目结构

UserController中的代码

package com.atguigu.spring.controller;

import org.springframework.stereotype.Controller;

@Controller
public class UserController {
}

 

UserDaoImpl中的代码
package com.atguigu.spring.dao.impl;

import com.atguigu.spring.dao.UserDao;
import org.springframework.stereotype.Repository;

@Repository
public class UserDaoImpl implements UserDao {
}

 

 UserDao中的代码

package com.atguigu.spring.dao;

public interface UserDao {
}

  UserServiceimpl 中的代码

package com.atguigu.spring.service.impl;

import com.atguigu.spring.service.UserService;
import org.springframework.stereotype.Service;

@Service
public class UserServiceimpl implements UserService {
}

 UserService中的代码

package com.atguigu.spring.service;

public interface UserService {
}

要想使用注解进行扫描,一定要在对应的位置加上注解,这是spring的xml配置文件

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
       xmlns:p="http://www.springframework.org/schema/p"
       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.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
		 http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">
<!--扫描组件-->
<context:component-scan base-package="com.atguigu.spring">
<!--    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>-->
<!--    <context:exclude-filter type="assignable" expression="com.atguigu.spring.controller.UserController"/>-->
    <!--根据注解排除一些不扫描的包,type="annotation-->
<!--  根据类的类型进行排除一些不扫描的包,  -->


</context:component-scan>



</beans>

 这是测试文件

package com.atguigu.spring;

import com.atguigu.spring.controller.UserController;
import com.atguigu.spring.dao.UserDao;
import com.atguigu.spring.service.UserService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class IOCByAnnotationTest {
  /*
  *@Component:将类标识为普通组件
  *@Controller:将类标识为控制层组件
  * @Service:将类标识为业务层组件
  * @Reposity:将类标识为持久层组件
  *
  * */


    @Test
    public  void test(){
       ApplicationContext ioc = new ClassPathXmlApplicationContext("spring-ioc-annotation.xml");
//        UserController userController= ioc.getBean(UserController.class);
//        System.out.println(userController);
        UserService userService= ioc.getBean(UserService.class);
        System.out.println(userService);
        UserDao userDao = ioc.getBean(UserDao.class);
        System.out.println(userDao);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值