用户代码与Spring的交互形式,你有总结过吗?

2019-01-11 08:35:28来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:springboot 学习笔记(二)

下一篇:Java编程题: 写一个Singleton出来