Spring注解

注解

  • 用于创建对象的: 作用和在xml配置文件中编写一个标签实现的功能是一样的
  • 用于注入数据的: 和 中写一个标签作用一样
  • 用于改变作用范围的
  • 和生命周期相关的

用于创建的注解

@Component: 把当前类对象存入spring容器中,
属性:​ value: 用于指定当前类的id. 不写时默认值是当前类名,且首字母改小写
@Controller: 将当前表现层对象存入spring容器中
@Service: 将当前业务层对象存入spring容器中
@Repository: 将当前持久层对象存入spring容器中@Controller,@Service,@Repository注解的作用和属性与

@Component是一模一样的,可以相互替代,它们的作用是使三层对象的分别更加清晰

在bean.xml约束中加入context相关:

<?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">         
       <!--告知spring在创建容器时扫描的包,配置所需要的标签不在bean的约束中,而是名为context名称空间和约束中-->      
      <context:component-scan base-package="com.bingo.account"/>
</beans>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gpQ9iOQ2-1585987075109)(img\s2.png)]

用于注入数据的注解四种:

@Autowired / @Qualifier / @Resource / @Value
@Autowired @Qualifier @Resource 不能用于基本类型和String,只能注入其他bean类型的数据集合的注入只能通过xml实现

@Autowired: 自动按照成员变量类型注入.

出现位置: 既可以在变量上,也可以在方法上
细节: 使用注解注入时,set方法可以省略注入过程:

  • 当spring容器中有且只有一个对象的类型与要注入的类型相同时,注入该对象.
    在这里插入图片描述
  • 当spring容器中有多个对象类型与要注入的类型相同时,使用要注入的变量名作为bean的id,在spring 容器查找,找到则注入该对象.找不到则报错.
    在这里插入图片描述

@Qualifier: 在自动按照类型注入的基础之上,再按照bean的id注入.

出现位置: 既可以在变量上,也可以在方法上.
注入变量时不能独立使用,必须和@Autowire一起使用; 注入方法时可以独立使用.
属性 :value: 指定bean的id
在这里插入图片描述

@Resource: 直接按照bean的id注入,可以独立使用.

属性:name: 指定bean的id
在这里插入图片描述

@Value: 注入基本数据类型和String类型数据.

属性:value: 用于指定数据的值,可以使用el表达式:${表达式}

作用域注解@Scope

属性:value 常用取值:1.singleton 2.prototype(不写默认单例)

@Service
@Scope("prototype")
public class AccountServiceImpl implements IAccountService {   
 //...
}

初始化、销毁注解

  • 初始化注解使用@PostConstruct 用于贴在初始化方法上
  • 销毁注解使用@PreDestroy 用于贴在销毁方法上
@Component("cal")
public class Cal {     
	@PostConstruct    
	public void before(){        
		System.out.println("初始化方法执行");    
		}    
	@PreDestroy    
	public void after(){        
		System.out.println("销毁方法执行");    
	}    
	public void myAdd(int n1,int n2){
	        System.out.println(n1+n2);    
	}
}
public class Test_2 {    
	public static void main(String[] args) {
//        	ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
//        	Cal cal=(Cal)context.getBean("cal");
        ClassPathXmlApplicationContext ca = new ClassPathXmlApplicationContext("bean.xml");        
	Cal cal=(Cal)ca.getBean("cal");        
	cal.myAdd(3,4);        
	cal.myAdd(1,2);        
	ca.close();    
	}
}
/*输出:        
初始化方法执行        
7       
3        
销毁方法执行*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值