Spring学习历程 --- 常用的基于注解的配置

37 篇文章 0 订阅
29 篇文章 2 订阅
本文介绍了Spring框架中基于注解的配置方式,包括如何使用注解启动Spring容器,使用@Component、@Service、@Controller、@Repository等进行组件定义,利用@Qualifier进行精确注入,以及对集合类的注解处理。同时,还详细讲解了Bean的作用域和生命周期方法,如@Scope、@PostConstruct和@PreDestroy的使用。
摘要由CSDN通过智能技术生成

一,使用注解信息启动Spring容器

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

    <context:component-scan base-package="org.example"/>

</beans>
Spring会扫描这个基类包下的所有的类。

可以这样过滤出全部的你想要解析的类:

    <context:component-scan base-package="org.example">
        <context:include-filter type="regex"
                expression=".*Stub.*Repository"/>
        <context:exclude-filter type="annotation"
                expression="org.springframework.stereotype.Repository"/>
    </context:component-scan>
推荐正则表达式,因为我就会这个。 大笑

二,配置类

1.类上面要加  @Component(""),或@Service,或@Controller,或@Repository

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;

@Component("userDao")
public class UserDao {

}
相当于 xml 中,这样配置
<bean id="userDao" class="com.UserDao"/>

2.要注入其他Bean时,可以用Qualifier注入,只需指定注入的Bean名称。

	@Qualifier("userDao")
	private UserDao userDao;

3.Qualifier还可以对方法的参数进行注入

	@Autowired
	@Qualifier("userDao")
	public void setUserDao(UserDao userDao) {
		System.out.println("auto inject");
		this.userDao = userDao;
	} 
	@Autowired
	public void init(@Qualifier("userDao")UserDao userDao,LogDao logDao){
		System.out.println("multi param inject");
		this.userDao = userDao;
		this.logDao =logDao;
	}
前面的标注表示自动将"userDao"的Bean传给第一个方法,后面的表示多个参数的注入方式。

4.对集合类进行标注

若是对类中集合变量或方法进行@Autowired标注,Spring会将容器中类型匹配的所有Bean都自动注入进来。代码附体:

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class MyComponent {
    
	@Autowired(required=false)
	private List<Plugin> plugins;

	public List<Plugin> getPlugins() {
		return plugins;
	}
}
Plugin是个接口,它拥有两个实现类,OnePlugin , TwoPlugin,他俩都通过@Component 标注为 Bean,则 Spring 会将这两个Bean都注入到plugins中。

5.Bean的作用范围及生命过程方法

1)通过 @Scope("prototype") 等改变作用范围,常写在类前面。

2)通过 @PostConstruct 来指定构造函数之后自动运行的方法,@PreDestory 来指定关闭容器之前所要运行的方法,写在方法前面。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值