文章目录
注解
- 用于创建对象的: 作用和在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>
用于注入数据的注解四种:
@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
销毁方法执行*/