Spring框架学习

赋值注解

1、通过扫描的方式管理Bean对象
2、在Spring的xml配置文件中配置扫描Bean组件时,<context:component-scan组件扫描标签,扫描指定包中的有以下注解表示的Bean组件@Controller@Service@Respository@Component;
3、改标签中也可以指定扫描包中哪种类型的注解;
4、@Service注解中有个value,可以指定bean的name
如果没有指定的value则使用实现类的名称首字母小写
5、DI注入时:
根据类型匹配注入@Authower
根据名称注入需要@Authower+@Qualifier(beanName)来实现
JDK中@Resource默认使用类型,类型没有则可以使用name名称注入

使用Springboot注解方式管理Bean:
1、在@Configuration配置类中使用@ComponentScan或@ComponentScans注解指定Bean包路径就可以扫描管理Bean组件;默认扫描本包及其子包,或显示指定扫描包;
2、也可以在注解中指定过滤活着包含的Bean组件注解,userDefaultFilter,includeFilter等


@Primary使用:在@Bean方法上,在类上,在<bean标签上


@Value注解给对象属性注入数据
1、直接赋值:@Value(“text”)
2、注入操作系统信息@Value("#{systemProperties[‘os.name’]}")
3、注入表达式结果:调用api获取值然后注入@Value("#{T(java.lang.Math).random()*100}")
4、注入Spring容器中的其他bean属性@Value("#{person.personNam}"),person容器中bean名称;personName是bean中的属性;
5、注入classpath中的resource资源,如txt文件@Value(“classpath:text.txt”)Resource接收
6、注入请求url的结果,@Value(“http://www.baidu.com”) Resource接收
7、注入properties配置文件中的配置项@Value("${jdbc.driver.name}"),这里需要在java配置类中通过@PropertyResource显示引入到Java配置类中,上面的配置才起作用


配置注解

1、@Lazy延迟加载
2、生命周器控制
@PostConstract:指定初始化方法,也可以用在配置类中的方法上
@PreDestory:指定销毁Bean的执行的方法
@DependsOn:Bean初始化和销毁时的顺序,在A类上加上@DependsOn({“b”}),这样spring容器会先实例化b,在实例化a。
3、@Import注解
向Spring容器中注入Bean方式:
方式1:<Bean标签
方式2:<context:component-scan + @Component批量装配
方式3:Java配置类的@Bean
方式4:Java配置类的@ComponentScan+@Component
方式5:BeanFactory+getObject方法
方式6:@Import注解,条件注入bean
静态使用方式:
@Import({aa.class})引入指定的class类就可以
动态根据业务控制需要引入的方式:
动态方式一:实现ImportSelector
实现类接口类中写逻辑什么情况下使用那个类,返回类的全路径类名字符窜,多个类使用String数组返回
@Import(实现了ImportSelector类)

动态方式二:实现ImportBeanDefinitionRegistrar
实现ImportBeanDefinitionRegistrar接口,在实现类中使用BeanDefinitionRegister向Spring容器中注入Bean对象;
把要添加的类使用RootBeanDefinition包装,然后在使用BeanDefinitionRegister注入就可以

4、补充
获取类的全路径类名:类.class.getName()
获取Spring容器中所有类:容器.getBeanDefinitionNames(),返回String[]数组

条件注解

@Condition
通过matcher方法来动态实现是否家在某个类是否需要被加在进Spring容器中;以下所有注解都是实现了condition接口的,然后完成了相关业务和实现。
在这里插入图片描述
补充:
获取BeanDefinitionRegister类就可以获取容器中的所有Bean


多环境下的解决方案Profile

profile是condition的一种延伸;
在Java配置类中使用@Bean注入bean对象时使用@Profile(“pro”)指定环境,当spring容器中的Enverment是pro时注入这个Bean其他时注入对应的bean;


Bean对象作用域

就是Spring容器中对象是单例还是多例;
@Scope():prototype多例,singleton单例(默认),request一个请求内一个Bean对象,session一个会话内一个Bean对象


SpringIOC原理浅析

IOC容器初始化:Application. = new ClassPathXmlApplicationContext(“applicationContext.xml”)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值