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

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:重要的不是内容,而是思考方式。




(完)


编程新说


用独特的视角说技术

posted on 2019-01-11 08:31  编程新说(李新杰)  阅读(816)  评论(0编辑  收藏  举报