spring框架理解笔记整理

spring框架理解笔记整理

以前写在笔记本上的笔记,整理一下,方便以后在线翻阅。

  1. 使用@Autowired注解自动转配bean的时候,都会有一个id , 默认为类名首字母小写。 当前也可以像xml中一样指定id名称。 如下所示:
@Component("xxx")
public class Test(){
	...
}

这样就指定了Test类交由spring容器管理bean的id 为 “xxx”.

  1. @Autowired注解不仅可以用在构造器上,还可以用在Setter()方法上.实际上是可以用在任何的方法上,注入不同的是方法的参数类型的不同。
    @Inject注解源于java依赖注入规范,其和@Autowired注解的差别不大。 一般情况下可以互换。 选其中一种即可。

  2. 自动化装配Bean有时候是行不通的,比如要将第三方库中的组件装配到自己的应用中,这种情况就没有办法在类上添加@Component和@Autowired注解了。此时就需要显示的进行装配了。显示装配有两种方式,分别为javaConfig和xml。而javaConfig往往是更好的方案,因为其更强大,类型安全,并且对重构友好。
    javaConfig与其他java代码有所区别,概念上,与应用程序中的业务逻辑和领域代码不同,javaConfig是配置代码,即不应包含任何的业务逻辑,尽管不是必须的 ,javaConfig也不应该入侵业务逻辑代码。
    通常情况会将javaConfig放到单独的包中,这样项目逻辑结构会更清晰。

  3. @Bean注解
    将该注解放在方法上,会告诉spring这个方法将会返回一个对象,该对象要注册为spring应用上下文中的bean
    方法体中包含了最终产生bean实例的逻辑。
    默认情况下,注册的bean的ID与带有@Bean注解的方法名是一样的。如果想要重命名,可以通过Bean的name属性指定.如下所示:

@Bean(name="xxx")
  1. 自动化装配bean
    两个角度:
    1). 组件扫描(component scanning)
    spring会自动发现应用上下文中所创建的bean。
    2). 自动装配: autowired , spring自动满足bean之间的依赖。

  2. 在默认的情况下,spring中的bean都是单例的,singleton形式创建,即不管给定的bean被注入到其他的bean多少次,每次所注入的都是同一个bean(特指单例这种方式)。

  3. 带有@Bean注解的方法会采用任何必要的java功能来产生bean实例(比如所需要一些参数的自动注入等,即是没有加上@Autowired注解)自动装配方法所需要的任何参数。

  4. spring中使用xml方式装配的缺点

    1. 在xml配置中,bean的创建更加被动,在javaConfig配置方式中,可以通过任何你可以想象的方法来创建bean实例。
      2)比如在 声明中,将bean的类型以字符串的形式设置在了class属性中,这样做是既不安全的。 谁能够保证给class属性的值是真正的类呢? 如果重命名了类呢?
      所以关键点就是,采用spring的xml不能从编译期的类型检查中收益。
  5. 配置文件的导入以及混合配置
    1) javaConfig里通过注解加载其他配置。

     (1)加载其他 javaConfig配置文件
     		@Import(xxxConfig.class)
     		public class Test(){
     		   ...
     		}
    
     		
      (2) 加载其他xml配置文件
     		@ImportResource("classpath:xxxxConfig.xml")
     		public class Test(){
     		   ...
     		}
    

    2)在xml中引用其他配置。

     	(1) 加载其他xml
       			
         (2)  xml中加载javaConfig配置  , 直接通过声明bean的方式
         		
         	注:class的值是类的全路径,注意不要带上 .class
    

    3)技巧
    可以使用更高层的配置文件, 这个文件不生命任何的bean, 仅负责将更多的配置文件组合起来,类似跟配置。(类似于java中包的用意,方便管理,并使得项目结构更加清晰)

你可能感兴趣的:(#,spring)