spring 2.5后支持注解来代替Bean
@Configuration
@Bean
/** * 注解后调用spring上下文 */ ApplicationContext context = new AnnotationConfigApplicationContext(Class类);
SpringIOC注解基本使用(spring2.5后支持注解来管理javaBean)
@Configuration:该注解标识在类上,然后就可以通过AnnotationConfigApplicationContext(***.class)来获取spring上下文环境(相当于xml的功能)。
@Bean:与xml配置文件<bean>标签一个用处,<bean>标签的id相当于获得@Bean(name="Id名"),如果不使用name,Id名为方法名称。
@Component:告知spring管理这个类,还可以通过该注解的value属性指定Bean的Id。
@Controller:被标注在Controller层。
@Service:被标注在Service层。
@Repository:被标注在Dao层
与Spring.xml相比不同点:
1、不用配置xml文件
2、提供一个配置类,并采用注解,来获取Bean
3、获取spring上下文的对象不同,注解使 用AnnotationConfigApplicationContext(***.class)获取spring上下文。
步骤1:提供一个配置类,并在类上添加@Configuration注解,并提供一个返回Bean对象的方法,并在该方法上添加注解。(如果@Bean没指定name属性,则Id为方法名)
步骤2:提供一个要创建的Bean的类。
如何进行简化:当要获取多个Bean时,则要编写多个@Bean注解和获取Bean方法?
步骤1:在配置类中添加@ComponentScan(value=“扫描的路径”)注解。
@ComponentScan()注解的作用:扫描带有注解@Component的Class,Spring将管理这些Class。
步骤2:Bean的类上加注解@Component,它的Bean的Id是类名的首字母小写的全称,如果不想使用这种方式,则使用@Component(value=“Id名”)。
spring.xml中开启包扫描:<context:component-scan base-package="扫描的包路径"/>
如何给Bean取别名(一个Bean对应多个Id名)?
因为Bean()注解里的name属性是String类型的数组,所以可以通过它来指定Bean的多个Id。注意:@Component里的value是字符串类型,只能有一个BeanId。
spring.xml给Bean取别名?
<bean id="bean1" name="bean2,bean3" class="..."/>
<alias name="bean1" alias="bean4"/>
老方法
注解:
简化@Bean
@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器
ApplicationContext context=new AnnotationConfigApplicationContext(类名.class); Bean1 bean1=context .getBean("bean",Bean1.class);
注解
注解的基本介绍
类似@component注解的注解
Bean取别名代码
注意:@Component方法只能取一个别名
代码总结
@component注解:通用行注解
@Controller注解:被标注在Controller层
@Service:被标注在Service层
@Repository:被标注在Dao层
代码总结
component-scan包扫描
注意:图中包含了另一种方法,在xml中开启包扫描。
简化方法:
可在MyConfiguration配置类的定义前,加上
@ComponentScan(value = "com.imooc.spring.ioc.Class013")
定位需要扫描的包。系统会自动加载在该包中带有@Component注解的类。
注意:使用该方法,扫描的BeanID默认为类名(首字母变小写)。也可自命名@Component(value="")
代码总结
使用配置文件注解管理Bean
管理Bean的管理类MyConfiguration代码
注意:
在类的声明前需要注解@Configuration
在创建Bean的函数前注解@Bean
创建的Bean默认的Bean ID为方法名,如图bean1.若需重命名,修改@Bean注解为@Bean(value="bean2")
重命名可同时定义多个,将多个名字定义成一个数组@Bean(value = {"bean2","bean3"})
测试代码部分
注意:以注解的方式管理Bean,new的上下文类为AnnotationConfigApplicationContext。其参数也由spring.xml,改为了注解了@Configuration的类的类类型。
spring从2.5版本以后开始支持以注解的方式,来管理Java Bean。
xml的情况下通过xml管理java bean、
给bean取别名的两种方式:xml形式,注解形式
bean别名的主要作用:将一个bean 在多个模块中使用不同的别名
且重点所有别名都引用的是同一个实例!!!
@Component注解
component-scan包扫描
@ComponentScan与@Component结合使代码注解更简单
@ComponentScan(value="包名 com.i....")固定扫描这个包下面的带有@Component的类下面的bean
改名:@Component(value=""),否则默认id为该类的类名首字母小写
annotation注解
@Configuration代表配置,相当于spring中的xml文件,@Bean是注册为bean,若是加括号@Bean(“bean2”)相当于注册的bean的id为bean2,否则默认bean的id为对应的方法中的方法名
xml配置文件
component注解
@Component注解的其他变式
通过xml配置文件获取bean
通过注解annotation获取bean
4-1简化springioc的注解操作逻辑
第二步:
使用注解: @Component
标注到要被实例化的类上,如Bean1
4-1简化springioc的注解操作逻辑
第一步:
使用注解: @ComponentScan(value="类的上一级包路径名")