1.依赖注入注解:

  @Component:Bean注入到Spring容器组件(通用)

  @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE):Bean作用域(
      SCOPE_PROTOTYPE:每次注入bean就是一个新的Bean
      SCOPE_SINGLETON:单例

  @Repository:标记该类为Dao数据访问层

  @Service:标记该类为Service业务逻辑层

  @Controller:标记该类为Controller控制访问层

 
 @Autowired注解:自动装配bean
      使用说明:该注解可以放在构造方法上,注入属性上,普通方法上
    属性:required = false(如果该类没有在Spring容器中则忽略不报错)
    歧义性:@Qualifier作用比@Primary强
/**
* Created by 小小高 on 19-7-14
*
* 学习Spring bean注入
* @Component注解:
* 标记这个类为组件,进行注入bean
*
* @Autowired注解:自动装配bean
* 使用说明:该注解可以放在构造方法上,注入属性上,普通方法上
*/
@Data
@Component
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
//@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
public class SpringTestBeanClass {
private String name;
private Integer age;
private String id;
@Autowired
private SpringBeanSonClass02 springBeanSonClass; // @Autowired/*注入bean到构造方法*/
// public SpringTestBeanClass(SpringBeanSonClass springBeanSonClass){
// this.springBeanSonClass = springBeanSonClass;
// } // @Autowired/*注入bean到普通方法*/
// public void setSpringBeanSonClass(SpringBeanSonClass springBeanSonClass){
// this.springBeanSonClass = springBeanSonClass;
// }
public void pay(){
System.out.println("调用SpringTestBeanClass类的pay方法");
springBeanSonClass.springBeanSonClass02();
}
}

  

  @Configuration:标记该类为配置类

* @Configuration注解;声明该类为配置类,加载Spring容器
* 使用说明:
* @Configuration注解的配置类有如下要求:
* 1.@Configuration不可以是final类型;
* 2.@Configuration不可以是匿名类;
* 3.嵌套的configuration必须是静态类。
* 加载容器:
* @Configuration配置spring并启动spring容器
* 1.@Configuration启动容器+@Bean注册Bean
* 2.@Configuration启动容器+@Component注册Bean
* 3.使用 AnnotationConfigApplicationContext 注册 AppContext 类的两种方法
* 4.配置Web应用程序(web.xml中配置AnnotationConfigApplicationContext)
*@ComponentScan注解:告诉Srping需要扫描的包或类,spring自动扫描并且装入bean容器。
* 使用说明:
* 1.默认规则:
* 是以该配置类所在的包作为基础包,会扫描该配置类同级包的类和子包类进行自动扫描装配
* 2.属性basePackages:
* 加载基础扫描包,自动装配扫描该包和该包的子包
* 3.属性basePackageClasses:
* 加载自动扫描标记类的同级包和子包的类
* @Bean注解:加载Bean容器实例
/**
* Created by 小小高 on 19-7-14
*
* @Configuration注解;声明该类为配置类,加载Spring容器
* 使用说明:
* @Configuration注解的配置类有如下要求:
* 1.@Configuration不可以是final类型;
* 2.@Configuration不可以是匿名类;
* 3.嵌套的configuration必须是静态类。
* 加载容器:
* @Configuration配置spring并启动spring容器
* 1.@Configuration启动容器+@Bean注册Bean
* 2.@Configuration启动容器+@Component注册Bean
* 3.使用 AnnotationConfigApplicationContext 注册 AppContext 类的两种方法
* 4.配置Web应用程序(web.xml中配置AnnotationConfigApplicationContext)
*@ComponentScan注解:告诉Srping需要扫描的包或类,spring自动扫描并且装入bean容器。
* 使用说明:
* 1.默认规则:
* 是以该配置类所在的包作为基础包,会扫描该配置类同级包的类和子包类进行自动扫描装配
* 2.属性basePackages:
* 加载基础扫描包,自动装配扫描该包和该包的子包
* 3.属性basePackageClasses:
* 加载自动扫描标记类的同级包和子包的类
* @Bean注解:加载Bean容器实例
*
*/ @Configuration
//@ComponentScan(basePackages = {"com.test.xll.spring_demo_study.bean.son"})
@ComponentScan(basePackageClasses = FlagBasePackageClass.class)
//@ComponentScan/*默认规则*/
public class SpringBeanDIConfig { @Bean
public SpringBeanSonClass springBeanSonClass(){
return new SpringBeanSonClass();
} @Bean
public SpringBeanSonClass02 springBeanSonClass02(){
return new SpringBeanSonClass02();
} @Bean
@Conditional(DIBeanCondition.class)/*条件注入Bean*/
public DIConditionBean diConditionBean(){
return new DIConditionBean();
} }
@PropertySource:注入外部的值
  
@Configuration
@PropertySource("classpath:app.properties")
public class SpringPropertySourceConfig { @Autowired
private Environment environment; @Bean
public DIPropertySourceBean diPropertySourceBean(){
return new DIPropertySourceBean(environment.getProperty("xll.key"), environment.getProperty("xll.value"));
}
}
xll.key=key
xll.value=value

@Import注解:

  1.加载注入普通类到Spring容器中

  2.动态注册ImportSelector

  3.手动注册ImportBeanDefinitionRegistrar

代码:

/**
* Created by 小小高 on 19-7-14
*
* @Import注解:注入普通类到Spring容器中
*
*/
@Configuration
@Import(value = {SpringImportStudyBean.class, SelfImportSelector.class, SelfImportBeanDefinitionRegistrar.class})
public class SpringImportStudyConfig { }
**
* Created by 小小高 on 19-7-14
*
* 学习注解@Import的普通类
*/
@Data
public class SpringImportStudyBean { private String name = "学习@Import注解使用的Bean类"; }
/**
* Created by 小小高 on 19-7-14
*
* 学习注解@Import的普通类
*/
@Data
public class SpringImportSelectprStudyBean { private String name = "学习接口ImportSelector注入Bean类"; }
/**
* Created by 小小高 on 19-7-14
*/
public class SpringSelfImportBeanDefinitionRegistrarBean { public void print(){
System.out.println("类名:"+Thread.currentThread().getStackTrace()[1].getClassName());
}
}
/**
* Created by 小小高 on 19-7-14
*/
public class SelfImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
@Override
public void registerBeanDefinitions(AnnotationMetadata annotationMetadata, BeanDefinitionRegistry beanDefinitionRegistry) {
//注入普通类到Bean容器
RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(SpringSelfImportBeanDefinitionRegistrarBean.class);
beanDefinitionRegistry.registerBeanDefinition("springSelfImportBeanDefinitionRegistrar", rootBeanDefinition);
}
}
/**
* Created by 小小高 on 19-7-14
*
* 使用ImportSelector进行注入bean到容器中
*/
public class SelfImportSelector implements ImportSelector {
@Override
public String[] selectImports(AnnotationMetadata annotationMetadata) {
return new String[]{"com.test.xll.spring_demo_study.bean.SpringImportSelectprStudyBean"};
}
}
												

Spring注解基础学习总结的更多相关文章

  1. Spring Framework基础学习

    Spring Framework基础学习 Core support for dependency injection,transaction management,web applications,d ...

  2. spring boot基础学习教程

    Spring boot 标签(空格分隔): springboot HelloWorld 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新 ...

  3. Spring MVC基础学习

    SpringMVC是Spring框架的一个模块,无需通过中间层整合在一起.SpringMVC是一个基于MVC设计模式web框架,MVC-model-view-controller:MVC将服务器端分为 ...

  4. spring boot 基础学习

    构建微服务:Spring boot 入门篇 http://www.cnblogs.com/ityouknow/p/5662753.html SpringBoot入门系列:第一篇 Hello World ...

  5. 【目录】Spring 源码学习

    [目录]Spring 源码学习 jwfy 关注 2018.01.31 19:57* 字数 896 阅读 152评论 0喜欢 9 用来记录自己学习spring源码的一些心得和体会以及相关功能的实现原理, ...

  6. Spring Boot 1.5.x 基础学习示例

    一.为啥要学Spring Boot? 今年从原来.Net Team“被”转到了Java Team开始了微服务开发的工作,接触了Spring Boot这个新瓶装旧酒的技术,也初步了解了微服务架构.Spr ...

  7. Spring Boot 项目学习 (二) MySql + MyBatis 注解 + 分页控件 配置

    0 引言 本文主要在Spring Boot 基础项目的基础上,添加 Mysql .MyBatis(注解方式)与 分页控件 的配置,用于协助完成数据库操作. 1 创建数据表 这个过程就暂时省略了. 2 ...

  8. 转-Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable

    转-http://snowolf.iteye.com/blog/1628861/ Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariab ...

  9. 【转】Spring 注解学习手札(超好的springmvc注解教程)

    Spring 注解学习手札(一) 构建简单Web应用 Spring 注解学习手札(二) 控制层梳理 Spring 注解学习手札(三) 表单页面处理 Spring 注解学习手札(四) 持久层浅析 Spr ...

随机推荐

  1. TLS/SSL 协议 - Server Certificate

    Server Certificate 典型的Certificate消息用于携带服务器X.509证书链.证书链是以ASN.1 DER编码的一系列证书,一个接着一个组合而成.主证书必须第一个发送,中间证书 ...

  2. ffs, fls

    linux内核中的宏ffs(x)   linux内核中ffs(x)宏是平台相关的宏,在arm平台,该宏定义在 arch/arm/include/asm/bitops.h #define ffs(x) ...

  3. 洛谷 P4173 残缺的字符串 (FFT)

    题目链接:P4173 残缺的字符串 题意 给定长度为 \(m\) 的模式串和长度为 \(n\) 的目标串,两个串都带有通配符,求所有匹配的位置. 思路 FFT 带有通配符的字符串匹配问题. 设模式串为 ...

  4. angularJS 绑定操作

    <button type="submit" ng-disabled="editForm.$invalid || vm.isSaving" class=&q ...

  5. 4-Ubuntu-启动/关闭/重启mysql服务

    启动: sudo service mysql start 关闭: sudo service mysql stop 重启: sudo service mysql restart

  6. 《代码大全2》读书笔记 Week3

    <代码大全2>第六.七章 作者在第六章中从抽象数据类型(Abstract Data Type)出发阐释类(class)的概念,给出创建类的原因以及创建高质量的常涉及的设计问题.抽象数据类型 ...

  7. 浅谈fetch

    在开发过程中,我们向服务端发送请求,一般会使用三种方式, XMLHttpRequest(XHR),jQuery实现的AJAX,Fetch ,让我们首先来比较一下这三者的使用示例. XMLHttpReq ...

  8. UVA11021 Tribles 概率dp

    题目传送门 题意:开始有$k$只兔子,每只都是活一天就死,每只死前都会有$pi$的概率生出$i$只兔子.求$m$天后兔子死光的概率. 思路: 设$f[i]$为一只兔子在第i天死完的概率,那么答案就是$ ...

  9. robotframework+python3+selenium之创建第一个项目---第三集

    1.新建一个project 选择Directory,则是文件夹 2.选择文件,创建new suite    test_1 3.创建test case   baidu_test 4.此时界面如图: 5. ...

  10. Windows中区位码转换为机内码

    步骤的简化 区位码的区和位分别加上32得到国标码, 再分别加上128得到机内码 区位码的区和位分别加上160得到机内码 区位码加上A0A0H = 机内码 示例: 我 我的区位码是4650 区位码 46 ...