基于注解的IOC-常用注解(Spring2.5规范)

SpringMVC学习记录文章目录:
1、程序的耦合和解耦思路
2、使用springIOC解决程序耦合的前期准备
3、BeanFactory和ApplicationContext的区别及ApplicationContext接口的实现类
4、bean标签及其实例化的3种方式
5、bean的作用范围和生命周期
6、Spring的依赖注入
7、基于注解的IOC环境搭建
8、基于注解的IOC-常用注解(Spring2.5规范)
9、Spring常用注解-新(Spring2.5规范以上)
10、Spring整合Junit单元测试
11、AOP的相关概念
12、Spring中AOP的术语
13、SpringAOP常用标签解释说明
14、SpringAOP中切入点表达式说明
15、SpringAOP类型说明及环绕通知的特殊说明
16、基于xml的SpringAOP配置
17、SpringAOP常用注解
18、基于注解的SpringAOP配置
19、Spring中的JdbcTemplate
20、Spring中的事务控制

其他bean类型数据注入使用的注解

@Component

作用:用于创建对象,相当于配置了一个bean标签
出现的位置:类的上方
属性

  • value:指定bean的id
    • 默认值:当类的短名首字母小写

由@Component衍生的三个注解:作用及属性和@Component一模一样(继承)

  • @Controller:一般用于表现层的注解
  • @Service:一般用于业务层的注解
  • @Repository:一般用于持久层的注解

代码示例:

@Component
public class CustomerServiceImpl implement ICustomerService{
}

相当于:

<bean id="customerServiceImpl" class="com.service.impl.CustomerServiceImpl"></bean>

然后在xml配置文件配置:

<!-- 告知spring框架在,读取配置文件,创建容器时,扫描注解,依据注解创建对象,并存入容器中 -->
<context:component-scan base-package="com"></context:component-scan>

@Autowired

作用:自动按照类型注入。
特点

  • 主要有唯一的类型匹配就能注入成功,不关心bean的id
  • 当我们使用注解注入时,set方法就不是必须的
  • 当有多个类型匹配时,会使用当前变量名称customerDao作为bean的id,继续在容器中找,找到了,也能注入成功。找不到就报错。

代码示例:

@Service("customerService")
public class CustomerServiceImpl implements ICustomerService {
	@Autowired
	private ICustomerDao customerDao = null;
	@Override
	public void saveCustomer() {
		System.out.println("业务层调用了持久层");
		customerDao.saveCustomer();	
	}
}

@Autowired寻找注入原理图
在这里插入图片描述

@Qualifier

作用:在自动按照类型注入的基础之上,再按照bean的id注入
属性

  • value:用于指定bean的id(value可以省略,直接用双引号写)

特点

  • 它在给类成员注入数据时不能独立使用,但是给方法的形参注入数据时可以独立使用(说明是用哪个id进行注入的)。 代码示例:
@Service("customerService")
public class CustomerServiceImpl implements ICustomerService {
	@Autowired
	@Qualifier("customerDao1")
	private ICustomerDao customerDao = null;
	@Override
	public void saveCustomer() {
		System.out.println("业务层调用了持久层");
		customerDao.saveCustomer();	
	}
}
@Service("customerDao1")
public class CustomerDaoImpl implements ICustomerDao {
	@Override
	public void saveCustomer() {
		System.out.println("持久层保存了客户1");
	}
}

@Resource

作用:直接按照bean的id注入
属性:
name:用于指定bean的id(不可以省略)
代码示例:

@Service("customerService")
public class CustomerServiceImpl implements ICustomerService {
	@Resource(name="customerDao1")
	private ICustomerDao customerDao = null;
	@Override
	public void saveCustomer() {
		System.out.println("业务层调用了持久层");
		customerDao.saveCustomer();	
	}
}

基本类型和String类型注入数据的注解

@Value

作用:用于注入基本类型和String类型
属性

  • value:用于属性要注入的数据

特点:利用spring的el表达式读取properties文件中的配置

代码示例:

@Service("customerService")
public class CustomerServiceImpl implements ICustomerService {
	@Value("李小龙")
	private String name;
	@Resource(name="customerDao1")
	private ICustomerDao customerDao = null;
	@Override
	public void saveCustomer() {
		System.out.println("业务层调用了持久层"+name);
		customerDao.saveCustomer();	
	}
}

改变作用范围的注解

@Scope

作用:用于改变bean的作用范围(与xml中bean配置的scope属性的作用和取值一样)
属性:

  • value:用于指定范围
    -取值:singleton,prototype,request,session,globalsession
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值