【Spring】第二站:基于 <注解> 的方式实现Bean管理和注入管理
注解
1. 注解定义
①:注解是代码特殊标记,
格式:
@注解名称 (属性名称=属性值,属性名称=属性值...)
②:使用注解,注解作用在类上面,方法上面,属性上边
③:使用注解的目的:
简化XML配置
2.Spring针对Bean管理中创建对象提供的注解
@Component 普通的类
@Controller 表现层
@Service 业务层
@Repository 持久层
*上边四个功能一样,都可以用来创建bean实例。
3.用注解的方式创建对象
1. Spring.xml
1> . 编写接口和实现类
public void run(){
System.out.println("赶紧跑....");
}
2>. 在需要管理的类上添加@Component注解
@Component
public class Demo {
public void run(){
System.out.println("赶紧跑....");
}
}
3>. 编写配置文件,重点是开启注解扫描。
<?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">
<!--开启注解扫描 com.qcby所有的包中的所有的类-->
<context:component-scan base-package="com.qcby"/>
</beans>
编写测试方法
@org.junit.Test
public void test2(){
ApplicationContext context=new ClassPathXmlApplicationContext("Spring.xml");
Demo demo=(Demo)context.getBean("demo");
demo.run();
2. Config纯注解方式
把Spring.xml文件删掉,不用Spring配置,直接注解创建对象也可以
定义一个Config文件
@Configuration//声明配置类
@ComponentScan(value = "com.qcby.service")
public class Config {
}
Demo类还是使用三个(Controller,Compoent,Service)
Test类测试:
@org.junit.Test
public void test2(){
ApplicationContext context=new AnnotationConfigApplicationContext(Config.class);
Demo demo=(Demo)context.getBean("demo");
demo.run();
注意:这里引入类不加引号
4. 用注解的方式实现属性注入
@Value不用提供get/set方案
@Autowired将对象进行自动匹配置入
@Value 用于注入普通类型(String,int,double等类型)
@Autowired 默认按类型进行自动装配(引用类型)
@Qualifier 不能单独使用必须和@Autowired一起使用,强制使用名称注入
@Resource Java提供的注解,也被支持。使用name属性,按名称注入
Spring框架刚一启动,就去扫描并且生成对象,之后把生成的对象放到bin容器(数组)中。随用随调。
加@Controller 注解,在刚开始Spring框架就生成了Cat对象
然后,在这里注解Autowired,直接调用Cat对象。(因为value比较麻烦,所以不常用)
Test测试:
@org.junit.Test
public void test2(){
ApplicationContext context=new AnnotationConfigApplicationContext(Config.class);
Demo demo=(Demo)context.getBean("demo");
System.out.println(demo.toString());