通过组键扫描使得Spring管理类的对象

本文详细介绍了如何在Spring框架中使用组件扫描功能,通过AnnotationConfigApplicationContext加载配置类,自动创建和管理组件对象。同时,解释了如何通过@Component注解标识组件,以及使用@Controller、@Service、@Repository等注解的场景。
摘要由CSDN通过智能技术生成

通过组件扫描使得Spring管理类的对象。

如果User类需要使用Spring框架管理,必须声明User类所在的包,然后再用测试类中的AnnotationConfigApplicationContext的构造方法中将包名作为参数():


import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Demo {
	public static void main(String[] args) {
		// 加载配置类,获取Spring容器
		AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext("cn.tedu.spring");
		// 获取Spring容器对象 
		/*
		 * 对于getBean();里面的参数如果类名** 首字母是大写,并且第二个字母是小写的**
		 * 那么参数名就是将首字母大写改为小写的即可!如果不满足这个条件的参数名就是类名!
		 * 他也是支持自定义参数名的,只要在类前添加@Component("参数名")即可!
		 */
		User user = ac.getBean("user", User.class);
		System.out.println(user);
		ac.close();

	}
}

当执行时Spring框架会扫描指定的包中堵塞内容,并且自动创建各组件的对象进行管理。
并不是所有的类都是“组件,要标识某个类是”组件“,就要在类声明之前添加@Component注解。

package cn.tedu.spring;

import org.springframework.stereotype.Component;

@Component
public class User {

}

除了@Component注解以外,还可以使用下面的注解实现相同的效果:

1.@Controller:控制类前使用
2.@Service:业务类前使用
3.@Repository:处理持久层的类前使用
这个4各注解在Spring框架的作用领域,效果是相同的,使用的格式也是一样的,只是使用的语义不同。
其中还有一点就是,在使用组件扫面的时候,可以自定义配置类,在这个类的前面添加使用@ComponentScan注解来配置要扫描的包!

package cn.tedu.spring;

import org.springframework.context.annotation.ComponentScan;

//里面的配置参数可以不写,写的话是为了以后项目大的话可以清楚看到扫描的是哪个包
@ComponentScan("cn.tedu.spring")
public class SpringConfig {

}

在测试类就需要修改原来是写包名的位置

AnnotationConfigApplicationContext ac 
    = new AnnotationConfigApplicationContext(SpringConfig.class);

注意:在使用组件扫描的过程中,如果扫描的是cn.tedu那么它会将cn.tedu->cn.tedu.spring->cn.tedu.spring.xxx这些包中的组件都扫描到!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值