用户代码与Spring的交互形式,你有总结过吗?
2019-01-11 08:35:28来源:博客园 阅读 ()
PS:教科书般的文章太多了,我要追求与众不同,注意是追求。授人以鱼不如授人以渔。
相关文章
如何慢慢地快速成长起来?
你是如何看待Spring容器的,是这样子吗?
??§认真思考,才能理解深刻
我们经常会说我在开发中用到了Spring,这句话没问题。但仔细思考下,也可以说成我写的代码用到了Spring,是不是觉得瞬间开启了一种新的思维。
我们经常会说把某个类注册到Spring中,这话也没毛病。但也可以说成我告诉Spring让她帮我把这个类注册一下。是不是觉得很新奇啊。
??§命令式,声明式
无论是科班码农还是半路出家,其实都是从命令式代码开撸的。
一是自己一行一行的写代码,实现一个功能,特有成就感。
二是码农都是基层劳动者,没有权利指挥别人,只能自己干。
这其实就是命令式的,缺点是比较耗时。
终于有一天遇到了SQL,码农翻身成了主人。
只要写一条SQL语句表明我的意图即可,不用关心如何执行的细节。
很爽,这就是声明式的,优点是省时省力。
这下变被动为主动了,角色反转。所以声明式的事物都会慢慢火起来。
整体来说我只需发号施令,然后坐等结果就行了。所以外卖行业火了。
Spring通过注解来支持声明式,所以我们并没有做什么,只是告诉Spring我们想做什么。
如果这些都明白,下面的内容就很轻松了。
??§让Spring帮你存
存入Spring里的类一般都叫做bean或组件。
在@Configuration类里使用@Bean方法就声明了想要把一个类注册为bean,同时这个@Configuration类自身也会被注册为bean。
可以认为@Configuration类就相当于一个bean源,主要作用就是向容器里贡献bean定义。
另外一种方式就是在类定义上使用@Component,声明了想要把该类注册为一个普通的组件。它有三个好哥们,就是@Repository、@Service、@Controller。用法一样,功能上各有侧重。
以上这些注解都是Spring自己的注解,除此之外,还支持JSR的注解,如@ManagedBean和@Named,与@Component语义相同。
主要是因为Java开源社区的发展倒逼Java的发展,所以Java的有些东西是从社区中吸收过来的。
??§让Spring帮你取
其实就是依赖注入啦。Spring提供了@Autowired注解,来执行按类型的注入,如果出现同种类型的多个候选bean,配合使用@Qualifier来进行名称限定即可。也可以把多个候选bean中的一个标记@Primary注解,表明它是主要候选bean。
也可以使用JSR的@Resource注解,需要注意的是Spring把它解释为按照名称进行注入的。
还可以使用JSR的@Inject注解,与@Autowired语义相同。
??§让Spring帮你做
Spring除了可以帮你存取bean之外,还可以帮你做一些事情。例如定时任务。
在@Configuration类上使用@EnableScheduling注解启用定时任务功能,然后使用@Scheduled注解标记想要被定时执行的方法即可。
??§让Spring来增强
Spring可以使用JDK动态代理或CGLIB来生成代理,对用户代码进行增强。使用最广泛的应该是声明式事务了。
在@Service类上使用@Transactional注解即可开启。
PS:重要的不是内容,而是思考方式。
(完)
编程新说
用独特的视角说技术
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Spring系列.ApplicationContext接口 2020-06-11
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- 项目经理说这种代码必须重构,我同意了,这代码是写的是有多 2020-06-11
- idea为代码添加标签清除标签 2020-06-11
- 给你一份超详细 Spring Boot 知识清单 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash