当前位置: 首页 > news >正文

佛山网站优化公司排名优化大师app下载安装

佛山网站优化公司排名,优化大师app下载安装,嘉定网站建站,凌云seo博客目录 一. Bean基本注解开发 二. Bean依赖注入注解开发 三. 非自定义Bean注解开发 四. Spring配置类的开发 五. Spring配置其他注解 5.1 Primary 5.2 Profile 六. Spring注入的解析原理 七. Spring注解方式整合第三方框架 一. Bean基本注解开发 Spring除了xml配置文件…

目录

一. Bean基本注解开发

二. Bean依赖注入注解开发

三. 非自定义Bean注解开发

四. Spring配置类的开发

五. Spring配置其他注解

5.1 @Primary

5.2 @Profile

六. Spring注入的解析原理

七. Spring注解方式整合第三方框架


一. Bean基本注解开发

Spring除了xml配置文件进行配置之外,还可以使用注解方式进行配置,注解方式慢慢成为xml配置的替代方案。

基本Bean注解,我们主要是使用注解的方式替代原有的xml的<bean>标签及其标签属性的配置

使用@Component注解替代<bean>标签。

原先我们配置是这样做的

而现在使用注解是这样的

之前的xml配置id是作为其beanName,然后根据全限定名寻找,现在我们的注解就在这个类上所以不需要全限定名,还要beanName我们可以给注解参数进行赋值。

这个时候我们使用之前的加载配置文件getBean就拿不到对应的对象了。

我们需要告诉他我们是用注解的方式进行注入的,需要在配置文件中进行注解组件扫描。

在之前spring基于xml开发中,我们做的自定义注解demo,那里的注解组件扫描是我们写死的,现在我们可以在配置文件中进行配置。

其实我们也可以基于之前的知识现在明白,这个配置不仅仅是扫描注解组件,还使用了Spring的后处理器进行"加工",其实后面spring很多的扩展点都是基于后处理器进行的。

在之前进行xml配置bean的时候,我们说过如果一个bean我们没有指定beanName,也就是没有在配置中写id,那么默认的beanName就是全限定名,而这里如果我们在@Component中没有写value参数,那么会是什么情况呢?

运行测试我们可以发现找不到这个bean了,那么我们看看内部情况。

我们可以发现如果没有写value,那么默认的beanName就是类名首字母小写。

我们使用@Component代替了<bean>标签,那么bean标签中属性如何进行配置呢?

我们知道JavaEE是分层的,为了语义化各层,所以@Component还有一些衍生注解:@Repository、@Service、@Controller。

@Repository在Dao层类上使用、@Servive在Service层类上使用、@Controller在web层类上使用

还有一些不属于任何层的我们就使用@Component。

二. Bean依赖注入注解开发

Bean的依赖注入注解,主要是使用注解的方式代替xml的<property>标签完成属性的注入操作

Spring提供了以下注解用于在Bean内部进行属性注入

  • @Value:使用在字段或方法上,用于注入普通数据
  • @Autowired:使用在字段或方法上,用于根据数据类型注入引用数据
  • @Qualifier:使用在字段或方法上,配合@Autowired,根据名称注入
  • Resource:使用在字段或方法上,根据类型或名称进行注入

使用Value注解进行username这个属性的注入,注入的值为zhangsan,并且打印一下username验证是否注入。

接下来我们看看使用@Autowired注入对象,这个也是后期最常用的注解。

形如之前的属性注入,我们也是可以使用set进行注入的。

接下来我们再看看配合@Autowired使用的@Qualifier是如何使用的。

此时我有两个UserDao对象,而@Autowired是根据类型进行注入的,如何判断注入的是哪个呢?

这个时候就可以使用@Qualifier,根据名称进行注入了。

最后我们看@Resource,不指定名称参数时,根据类型注入,指定名称就根据名称注入

@Autowired的扩展:

我们也可以这样使用将其注入。

三. 非自定义Bean注解开发

非自定义Bean不能像自定义Bean一样使用@Component进行管理,非自定义Bean要通过工厂的方式进行实例化使用@Bean标注方法即可,@Bean的属性为beanName,如不指定为当前工厂方法名称。

    

这里要注意的点是配置了@Bean的方法的类是要被Spring管理的。

还有就是要是我们想在方法中注入属性该如何操作呢?

在这里我们可以使用@Value进行普通属性注入,还可以使用@Qualifier进行指定名称的对象注入,但是@Qualifier不是需要配合@Autowired一起使用吗?

在属性注入的时候可以直接使用@Qualifier对指定名称的对象进行注入,并且如果使用@Autowired进行根据类型的注入,@Autowired可以省略。

四. Spring配置类的开发

上面的注解我们学习的都是替代xml文件中<bean>标签的,那么其他的配置我们是否也能用注解进行配置呢?也就是完全不需要配置文件。

接下来我们学习的就是配置类的注解开发。

我们使用这些注解来替代原先xml中的配置

这里的@Configuration也是@Component的衍生。

@ComponentScan是组件扫描配置

@PropertySource用于加载外部properties文件

并且这个时候在测试类中我们不再是以xml的方式加载spring容器,而是以配置类的形式。

五. Spring配置其他注解

5.1 @Primary

@Primary注解用于标注相同类型的Bean优先被使用权,@Primary是Spring3.0引入的,与@Component和@Bean一起使用,标注该Bean的优先级更高,则在通过类型获取Bean或通过@Autowired根据类型进行注入时,会选择优先级更高的。

5.2 @Profile

@Profile注解的作用同于xml配置时学习的<beans profile="test">是切换环境使用的。

@Profile可以标注在类或方法上,标注当前产生的Bean从属于哪个环境,只有激活当前环境,被标注的Bean才能被注入到Spring容器中,不指定环境的Bean,任何环境都可以注入到Spring容器。

可以使用以下两种方式指定被激活的环境:

  • 使用命令行动态参数,虚拟机参数位置加载 -Dspring.profiles.active=test
  • 使用代码方式指定环境变量,System.setProperty("spring.profiles.active","test");

六. Spring注入的解析原理

学习前先复习一下这张图。

这里由于注解的方式细节过多,这里介绍xml方式是如何注入的。

xml的方式进行注入是通过自定义命名空间进行的,我们先找到其对应的映射文件。

进入这个ContextNamespaceHandler

进入其对应的解析器ComponentScanBeanDefinitionParser,这里我们看关键方法

再来进入这个doScan,这里我们也看关键代码,将需要注入的对象都注册到BeanDefinitionMap中。

Spring注解的解析原理也是如此,最后的两步也是需要走doScan和register方法进行注册到BeanDefinitionMap中。

七. Spring注解方式整合第三方框架

第三方框架整合,依然使用MyBatis作为整合对象,之前已经使用xml方式整合了MyBatis,现在使用注解的方式无非就是将xml标签替换为注解,将xml配置文件替换为配置类即可。

之前xml方式整合MyBatis:

接下来我们就将其替换为注解的方式。

并且写一个方法进行测试

到这里Spring基于注解开发就差不多解释完了,这里我分享的比较来自于学习的课程b站的黑马spring课程,感兴趣可以看看。

http://www.yayakq.cn/news/193143/

相关文章:

  • 金蓝盟企业管理咨询公司北京专业seo公司
  • 呼市推广网站中企动力科技股份有限公司青岛分公司
  • 开网站需要钱吗wordpress更换登录账号
  • 设计网站app运营方案策划
  • 炫酷个人网站XART视频库WordPress
  • 炎陵网站建设天津电力建设公司网站
  • 免费wap自助建站网站企业资产管理系统软件
  • 个人网站开发是学什么语言苏州免费推广的网站
  • 企业网站必须备案太原网络营销网站
  • 网站免费下载安装浙江省住房建设局网站首页
  • 顺德做网站北京发布会直播回放
  • 网站维护哪些简易的在线数据库网站模板下载
  • 无锡市新吴区住房和建设交通局网站做网站代码编辑工具
  • 网站百科怎么做泰兴做网站公司
  • 最专业的佛山网站建设深圳ui设计师招聘
  • 南通物流网站建设wordpress 搜索调用
  • 哪些是asp网站网站开发项目终止协议书
  • 哪些企业用wordpress建站百度关键词排名推广
  • 30天网站建设营销型网站单页面
  • 做门户网站代码质量方面具体需要注意什么线上商城怎么开
  • 做网站用什么系统好电商网站开发文献汇总
  • 什么是域名系统 网站建设教程格尔木市住房和城乡建设局网站
  • 做练习题的网站网站开发软件工程师
  • 在百度里面做网站要多少钱义乌网站建设工作室
  • 做网站手把手软件官网模板
  • 望城建设局网站黄冈智能网站建设平台
  • 百度网站标题优化一流的商城网站建设
  • 自己能制作免费网站吗建站平台工具
  • 网站加油站广州小程序开发公司哪家好
  • 网站建设思路梳理空间设计logo