Spring注解

文章目录

  • 注解
    • 用于创建的注解
    • 用于注入数据的注解四种:
      • @Autowired: 自动按照成员变量类型注入.
      • @Qualifier: 在自动按照类型注入的基础之上,再按照bean的id注入.
      • @Resource: 直接按照bean的id注入,可以独立使用.
      • @Value: 注入基本数据类型和String类型数据.
    • 作用域注解@Scope
    • 初始化、销毁注解

注解

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

用于创建的注解

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

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

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


<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="com.bingo.account"/>
beans>

Spring注解_第1张图片

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

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

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

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

  • 当spring容器中有且只有一个对象的类型与要注入的类型相同时,注入该对象.
    Spring注解_第2张图片
  • 当spring容器中有多个对象类型与要注入的类型相同时,使用要注入的变量名作为bean的id,在spring 容器查找,找到则注入该对象.找不到则报错.
    Spring注解_第3张图片

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

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

@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        
销毁方法执行*/

你可能感兴趣的:(Spring,Spring,注解)