学无先后,达者为师

网站首页 编程语言 正文

Spring之基于注解装配Bean

作者:青梧w 更新时间: 2022-08-15 编程语言

一、基于XML实现

首先需要在XML中加入如下代码

	<!--    允许使用注解完成bean的自动装配-->
	<context:annotation-config></context:annotation-config>
	<bean id="myCar" class="com.project.CarBean">
	    <property name="name" value="迈凯伦"></property>
	</bean>

1、@Autowired

作用:装配Bean。

用法:①配置在属性上 ②配置在set方法上 ③配置在构造方法上

注:@Autowired注解是按类型装配依赖对象,如果有多个类型则按名称匹配。默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它required属性为false。

2、@Qualifier

作用:配合@Autowired使用。把按类型配置变为按名称匹配。

配置:①配置在属性上 ②配置在set方法上

	@Autowired
	//自动装配bean对象 -- 按照类型装配
	@Qualifier
	//Autowired使用,将Autowired装配方式改为由名称匹配
	 private CarBean carBean;

3、@Resource

作用:装配Bean。

用法:①配置在属性上 ②配置在set方法上

• @Resource是JSR-250规范定义的规范。

• @Resource注解默认按名称装配。名称可以通过name属性指定,如果没有指定name属性,默认取属性的名称作为bean名称寻找依赖对象。

注:如果没有指定name属性,并且按照默认的名称找不到依赖对象时, @Resource会回退到按类型装配。但一旦指定了name属性,就只能按名称装配了。

	@Resource(name = "myCar")
	private CarBean carBean;

4、@PostConstruct与@PreDestroy

作用:指定初始化方法与销毁方法。

用法:配置在自定义的初始化方法和销毁方法上。

    @PostConstruct
    //bean对象初始化时调用的方法
    //无参公共方法
    public void init() {
        System.out.println("学生初始化");
    }

    @PreDestroy
    //bean对象被销毁之前调用的方法
    //无参公共方法
    public void destroy() {
        System.out.println("学生销毁");
    }

• @PostConstruct与@PreDestroy是JSR-250规范定义的规范。

• 初始化方法在容器产生Bean对象的时候被调用。

• 销毁方法在容器主动调用销毁的时候被调用。

• 容器只管理单例Bean的销毁。

• 两个方法必须是无参的公共方法。

二、基于类实现配置

创建一个配置类Config

1、@Configuration

作用:标识当前类为Spring配置类,以此代替xml文件,从而实现零配置。

设置了@Configuration注解的类称为中心服务类,负责注入所需的Bean对象。

	@Configuration
	public class Config {
	
	}

2、@ComponentScan

作用:指定扫描的包,在中心服务类前加注解。

	//basePackages指定从哪个包开始扫描
	@ComponentScan(basePackages = "com.project")
	//basePackageClasses 指定从哪个类所在的包开始扫描
	//@ComponentScan(basePackageClasses = ApplicationConfig.class)
	public class ApplicationConfig {
	
	}

3、@Component

作用:标识需要装配的类,在需要装配的类前加注解。

容器被创建时,此类会自动创建一个对象,并由容器进行管理
	@Component
	public class StudentBean {
	
	}

4、@Autowired

    @Autowired
    IUserDao userDao;

5、实现

	//加载配置类 完成容器的创建
	ApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
	IUserService service = context.getBean(UserServiceImpl.class);

原文链接:https://blog.csdn.net/weixin_44002920/article/details/125804805

栏目分类
最近更新