这篇文章主要介绍“Spring如何读取存储Bean对象”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring如何读取存储Bean对象”文章能帮助大家解决问题。我们之前注册bean
是通过在xml
配置文件中,通过键值对的方式注册bean
对象!
显然这种方式很麻烦,注册一个对象,就要添加一项!
有没有什么好的方式可以让spring
直接去注册对象!yes!
我们可以直接在配置文件配置好 spring
下你要注册对象的包时那个!
当spring
启动后,spring
就会将bean
对象自动注册!spring-config
配置文件当然只有一个配置文件显然不够嘛!
我们如何知道我们代码中的对象是bean
对象捏?
这就要引入spring
五大注解概念了!
我们通过在我们创建好的对象上面添加注解的方式,就是告诉spring
这个对象需要注册到容器中!类注解:方法注解:
@Bean我们可以通过上述两种注解将对象存储到Spring
中!使用@Controller
注解存储bean
我们通过在UserController
类上加上spring
类注解,即可完成注册对象!免费云主机域名在启动类中读取bean
对象即可!如果我们的需要注册的bean
对象不在扫描包下,是否又能注册成功呢?我们在新建一个controller
包在其下创建TestController
类,并且通过@Controller
注册到Spring
中!然后我们通过ApplicationContext
上下文对象读取bean
可以看到出现异常未找到名为textController
的bean
对象!结论:只有在扫描包下的类才能被Spring
注册注册bean
读取bean
可以看到这5大类注解使用方式一样,都可以对对象进行注册!
而且注册的方式都一样,既然如此为何还需要5个注解呢?我们联系实际生活中的车牌号,我们虽然车牌号的功能都是一样,但是不同地区都有自己的车牌号!我们通过车牌号就可以分辨出这车来自哪里!
而这里5大类注解作用也是如此,我们通过类注解,可以知道当前类的用途!
例如;@Controller
:表示业务逻辑层@Service
:服务层@Repository
:持久层@Configuration
:配置层程序的工程分层,调用流程如下:我们拿去银行办业务做类比:@Controller
层就是保安,先要进行检查验证,然后到达Service
服务厅询问业务,不同的业务来到Repository
,不同的窗口,然后进行相应的工作人员办理业务!类注解之前联系:可以看到其他4个注解都是Component
注解的子类!我们可以看到我们刚刚读取bean
对象时,我们并不知道bean
对象注册的id
而是直接通过userController
读取!
难道说Spring注册bean对象id
为类名首字母小写,直接就小驼峰?我们查看Spring
源码验证!我们顺藤摸瓜下方就是Spring
对Bean对象进行命名的方法!可以看到我们这里bean
对象的id
命名规则如下:对象类类名一般采用大驼峰的形式也就是单词第一个字母大小,所以Spring
直接bean
对象改为小驼峰,`第一个字母分成小写!对象类类名不规范,不是大驼峰,第二个字母和第一个字母都是大小!Spring
直接将bean对象命名为类名!我们进行验证:我们了解了5大类注解可以进行对象注册,我们使用方法注解进行对象注册!
注意: 方法注解要和类注解配合使用!方法注解进行对象注册可以看到@Bean
注解适用于返回值返回对象的方法中!我们既然可以通过五大类注解进行对象注入!那为何还要多此一举在方法上加上@Bean
方法注解呢?我们可以通过@Bean
方法注解给bean
对象重命名,可以直接设置名字!通过 name={"rename1", "rename2"...}
可以重命名多个!能否通过之前Spring
给我们设置的名字访问? 不能@Bean(name={"user1","user2"})
重命名多个!我们也可以将name
省略@Bean({"user1"})
这里可能听了有点迷,啥玩意对象装配,其实就是获取对象!
我们将对象注册到Spring
容器下,我们要读取将对象取出放入到某个类中,这就是对象装配,也叫对象注入!实现对象装配的3种方法属性注入构造方法注入Setter注入下面我们来演示一下这3种注入方式我们按照实际开发将Service
层的类注入到Controller
层的类中!我们通过@Autowired
实现属性注入service
层类代码controller
层类代码
通过属性注入将service
层代码注入到这运行结果:我们还是通过@Autowired
注解注入属性注入简洁,使用方便! 缺点只能适用于IoC容器,在非IoC容器不适用,并且属性注入只有在是使用的时候才会出现空指针异常(NPE)构造方法注入现在官方推荐注入方式! 缺点 如果注入多个对象,就会使得代码臃肿,不过这就是程序员的问题了,不符合程序设计的单一职责的设计模式,优点通用性强,在使用前一定可以保证注入的类不为空!Setter方式是Spring前期推荐的注入方式,通用性不如构造方法注入,现在已经认准构造方法注入!在进行类注入时,我们还可以通过@Resource
注解进行注入!
我们只需要将@Autowired
注解换成@Resource
即可!@Autowired
和@Resource
区别出身不同:@Autowired
注解是Spring
提供的,@Resource
是来自JDK
下的注解使用设置的参数不同:相比@Autowired
注解,@Resource
注解 支持更多的参数设置 例如name
设置,根据name
获取对象我们在Users
类中注册了2个相同类型的Bean
对象!当我们直接注入到Controller
类中!因为我们在Spring
中注册了2个相同类型的User
对象,所以进行对象装配时,也需要通过name
属性进行声明你要装配的对象名!注意:@Resource
注解才提供了name
属性,如果用@Autowried
需要加上@Qualifier
注解定义名称关于“Spring如何读取存储Bean对象”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注百云主机行业资讯频道,小编每天都会为大家更新不同的知识点。
这篇文章主要讲解了“C#如何使用com获取Windows摄像头列表”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#如何使用com获取Windows摄像头列表”吧!我们使用directshow获取视频设备列表,…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。