Spring注解

Spring注解

@Configuration:告诉spring这是一个配置类,配置类=配置文件

@ComponentScan (value:指定要扫描的包)

  • excludeFilters=Filter[]:指定扫描的时候按照什么规则排除那些组件
  • includeFilters=Filter[]:指定扫描包的时候只需要包含那些组件

@Bean:给容器中注册一个Bean,类型为返回值的类型,id默认是用方法名作为id。

@Scope:设置组件作用域

  • singleton:单实例的(默认值):ioc容器启动会调用方法创建对象放到ioc容器中。以后每次获取就是从容器(map.get())直接拿,
  • prototype:多实例的:ioc容器启动时并不会去调用方法创建对象放在容器中。每次获取的时候才会调用方法创建对象。
  • request:同一次请求创建一个实例
  • session:同一个session创建一个实例

@Lazy:懒加载:单实例bean,默认在容器启动的时候创建对象;懒加载就是容器启动不创建对象。第一次使用(获取)Bean创建对象,并初始化。

@Conditional:按照一定的条件进行判断,满足条件给容器注册bean,标注在类上满足条件,这个类中配置的所以bean注册才能生效。
给容器中注册组件:

  1. 包扫描+组件标注注解(@Controller/@Service/@Repositroy/@Component)[自己写的类]

  2. @Bean[导入的第三方包里面的组件]

  3. @Import[快速给容器中导入一个组件]:

    1). @Import(要导入到容器中的组件)导入组件,id默认是组件的全类名。
    2). ImportSelector:返回需要导入的组件的全类名数组。
    3). ImportBeanDefinitionRegistrar:手动注册bean到容器中。

  4. 使用Spring提供的接口FactoryBean(实现工厂Bean)
    1).默认获取到的是工厂bean调用getObject创建的对象
    2).要获取工厂Bean本身,我们需要给id前面加一个&标识

@Value:使用@Value赋值

  • 基本数值:@Value(“张三”)
  • 可以写SpEl:@Value("#{20-2}")
  • 可以写${}:取出配置文件中的值(在运行环境变量里卖弄的值)
  • 使用@PropertySource读取外部配置文件中的k/v保存到运行的环境变量中;加载完外部的配置文件以后使用${}取出配置文件中的值

自动装配:
Spring利用依赖注入(DI),完成对IOC容器中各个组件的依赖关系赋值

1.@Autowired:自动注入

  • 默认优先按照类型去容器中找对应的组件: applicationContext.getBean(BookDao.class);
  • 如果找到多个相同类型的组件,再将属性的名称作为组件的id去容器中查找applicationContext.getBean(“bookDao”);
  • @Qualifiler(“bookDao”):使用@Qualifiler指定需要装配的组件的id,而不是使用属性名
  • 自动装配默认一定要将属性赋值好,没有就会报错
    可以使用@Autowired(required=false);
  • @Primary:让Spring进行自动装配的时候,默认使用首选的bean
    也可以继续使用@Qualifier指定需要装配的bean的名字
	BookService{
		@Qualifiler("bookDao")
 		@Autowired(required=false);
 		BookDao bookDao;
 	}

2.Spring还支持是用@Resource(JSR250)和@Inject(JSP330)【java规范的注解】

  • @Resource:可以和@Autowired一样实现自动装配功能:默认是按照组件名称进行装配的;
  • @Inject:需要导入javax.inject的包,和Autowired的功能一样,没有required=false的功能
  • @Autowired:Spring定义的;@Resource、@Inject都是java规范

3.@Autowired:构造器,参数,方法,属性;都是从容器中获取参数组件的值

  • 【标注在方法位置】:@Bean+方法参数;参数从容器中获取
  • 【标注在构造器上】:如果组件只有一个有参构造器,这个有参构造器的@Aotowired可以省略,参数位置的组件还是可以从容器中获取
  • 放在参数位置

4.自定义组件想要使用Spring容器底层的一些组件(ApplicationContext,BeanFactory,xxx);

  • 自定义组件实现xxxAware;在创建对象的时候,会调用接口规定的方法注入相关组件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值