Spring04-注解实例化对象,扫描器

1:为什么需要扫描器

实际开发中,bean数量庞大,采用手动装配bean的方式无法满足生产,spring提供了扫描方式,对扫描的bean对象统一管理,简化开发配置,提高开发效率。

2:Spring扫描器配置

  1. 引入context
  2. 开启自动扫描范围:如果bean对象未在此包内,即使添加注解也无法实例化。
<?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:p="http://www.springframework.org/schema/p"
       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
       http://www.springframework.org/schema/context/spring-context.xsd">

    <!--开启注解驱动-->
    <context:annotation-config/>
    <!--声明扫描的包-->
    <context:component-scan base-package=""/>
</beans>

3:SpringIOC扫描器使用

在这里插入图片描述

使用指定的注解(声明在类上) bean的id默认为类名首字母小写

  1. Dao层:
    @Repository

  2. Service层:
    @Service

  3. Controller层:
    @Controller

  4. 任意类:
    @Component

各层类:

//dao层注解
@Repository
public class UserDao {
    public void test(){
        System.out.println("UserDao");
    }
}


//service层注解
@Service
public class UserService {
    //自动装配
    @Resource
    private UserDao userDao;

    public void test(){
        userDao.test();
        System.out.println("UserService");
    }
}


//controller层
@Controller
public class UserController {
    //自动装配
    @Resource
    private UserService userService;
    //自动装配
    @Resource
    private OtherUser otherUser;

    public void test(){
        otherUser.test();
        userService.test();
        System.out.println("UserController");
    }
}


//任意类
@Component
public class OtherUser {
    public void test(){
        System.out.println("OtherUser");
    }
}

Test:

public static void main(String[] args) {
    ApplicationContext context=new ClassPathXmlApplicationContext("spring.xml");
    UserController uc= (UserController) context.getBean("userController");
    uc.test();
    /*
    OtherUser
    UserDao
    UserService
    UserController
     */
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值