spring框架在使用过程中,需要对它进行一系列的配置才可以使用,在spring发展过程中,配置方式也发生了一些变化:
2.5版本前====>xml
2.5版本后====>annonation+xml
3.0版本后====>annonation+javaConfig配置类
目录
2.5版本前:xml
2.5版本后:annonation+xml
1.注入类:用来注入对象
2.注入数据
3.其他注解
3.0版本后:annonation+javaConfig配置类
2.5版本前:xml
2.5版本以前,配置spring框架使用的是纯xml的方法,将每个对象都使用<Bean></Bean>注入进框架中,使用方法大概如下:
使用xml方式注入类有三种方式:
构造注入:使用构造方法注入bean;
<bean id="" class="" init-method="" destroy-method="" scope="" autowire="">
<constructor-arg></constructor-arg></bean>
Setter注入:使用Setter方法注入bean;
<bean id="" class="" init-method="" destroy-method="" scope="" autowire="">
<property></property></bean>
属性注入:使用成员属性注入bean,不推荐。原因:使用私有的成员属性变量,依靠反射实现,破坏封装,只能依靠IOC容器实现注入,不严谨;
2.5版本后:annonation+xml
2.5版本以后,为了弥补xml配置方式的缺点:过于复杂,就有了注解和xml一起使用来配置spring的方式;常用的spring注解大致分为以下几类:
1.注入类:用来注入对象
@Component
             含义:将注解所修饰的类(任意类)注入spring容器
             位置:类
             语法:@Component(value = "id")
                  如果省略value="id"默认注入的id为类的名称且首字母小写
             注意:不可以单独使用
                 <context:component-scan base-package=""></context:component-scan>
@Repository 注入数据访问层
@Service    注入业务层
@Controller 注入控制层
             以上三个注解与@Component功能语法一致
2.注入数据
 @Value()
             含义:向属性注入基本类型与String
             语法:@Value("数据")
                  @Value("${key}")
             位置:属性
             注意:不能单独使用,需要搭配
                 <context:property-placeholder location=""></context:property-placeholder>
 @Autowired()
             替换:自动装配属性
             位置:属性
             含义:通过“set”方法【set方法可以省略】,按照“类型”自动装配,如果类型冲突则按照"名称"装配
             注意:
                 1.按类型装配如果冲突切换为名称装配
                 2.按类型装配如果冲突切换为名称装配,如果名称也没有则会抛异常
                     NoUniqueBeanDefinitionException
                 3.按类型装配没一个匹配
                     NoSuchBeanDefinitionException
3.其他注解
 @Primary
             含义:在类型装配冲突的情况下,此注解所修饰的类作为首选项
             位置:类
             注意:不能单独用
 @Qualifier
             含义:按照名称装配
             位置:属性
             注意:不能单独用
@Resource
             含义:按照名称装配
             位置:属性
             注意:单独用
 @Scope
             含义:作用域
属性值:
                        singleton :Spring只会为该bean对象只会创建唯一实例,Spring 中的 bean 默认都是单例;
                        prototype :每次获取bean,Spring会创建一个新的 bean实例;
                        request:每一次 HTTP 请求,Spring会创建一个新的 bean实例;
                        session :不同的HTTP会话,Spring会创建不同的 bean实例;
             位置:类
             注意:不能单独用
             举例:@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@PreDestroy
             含义:替换destory-method
             位置:方法
             注意:单独用
@PostConstruct
             含义:替换init-method
             位置:方法
             注意:单独用
3.0版本后:annonation+javaConfig配置类
spring在3.0版本以后,为了更加优化配置方式,就有了注解加配置类的方式来配置spring框架,因此就有了一些新的注解来完成配置;
 @Configuration
             含义:配置类
             注意:调用时要使用AnnotationConfigApplicationContext(applicationConfig.class)
@ComponentScan
             替换:<context:component-scan base-package=""></context:component-scan>
@PropertySource()
             替换:<context:property-placeholder location=""></context:property-placeholder>
@Import()
             含义:导入其他配置类
@Bean
             含义:注入类;方法返回值为class 方法名称为id
             位置:修饰方法
             注意:单独使用无需扫描