<div class="blogpost-body cnblogs-markdown" id="cnblogs_post_body">
<ul><li>Spring带给了我们什么便利?</li><li>注解版本的IOC如何玩?
<ul><li>组件注册
<ul><li>组件注册的过程中有哪些过滤规则?</li><li>如何控制组件的作用域(单例多例)?</li><li>六种注册组件的方式?</li></ul></li><li>生命周期
<ul><li>什么是bean的生命周期</li><li>在bean的生命周期的各个阶段我们可以插手做什么?</li></ul></li><li>属性赋值
<ul><li>我们有哪些手段给bean的属性赋值?<br></li></ul></li><li>自动装配
<ul><li>什么是自动装配?</li><li>Spring提供哪些注解可以帮我们实现自动装配?</li><li>java规范提供了哪些注解帮助我们实现了自动装配?</li><li>Spring提供的<code>@Profile</code>实现适配多环境?</li></ul></li></ul></li><li>注解版本的AOP如何玩?</li></ul>
<h2 id="spring带给了我们什么">Spring带给了我们什么?</h2>
<p>假如我们是第一次学习Spirng,我们大可不必关心spring带给我了我们什么便利,因为spring大概是web阶段筑基需要学习的第一个主流框架,初学难免会遇见各种各样的错误,所以尽管放心大胆的去学习如何使用就行了.先会用,其它的不用多想</p>
<p>过几天,用着熟悉了如何使用,再考虑spring究竟带给了我们什么便利也不迟, <strong>那么,spring究竟带给了我们什么便利呢?</strong></p>
<ul><li><p><strong>IOC(Inverse of Control),把对象的创建权反转给Spring容器,实现了解耦</strong></p>
<blockquote>
<p>我们使用Spring提供给我们的注解,把bean注册进IOC容器,进而把bean之间的依赖关系全部交给Spring管理,现在想想这绝对是一件超级赞的事情,可能原来的我会想,我自己可以new对象,干嘛非让Spring插一脚,是,假如我的项目就是个小demo全文一共三对象,完全顾的上来,那么spring对我来说就是累赘,但是!慢慢的接触的工程大了就会发现,离开了Spring,自己去管理那些对象之间的依赖会累死人的,而且SpringIOC的诞生也应正了bean的管理,完全不需要我们关系,我们关心的就是,我们如何向Spring索取依赖的Bean就行了,所以说Spring真的是web爱好者的小春天.</p>
</blockquote></li><li><p><strong>AOP(Aspect Oriented Programming),spring的aop</strong></p>
<blockquote>
<p>面向切面编程,aop说白了就是代码复用,把大量的重复代码从我们的业务逻辑中抽取出去,等程序运行的时候再动态的植入抽取出去的代码,这是件要多优雅就多优雅的事情!</p>
</blockquote></li><li><p><strong>声明式事务</strong></p>
<blockquote>
<p>后端天天和数据库打交道,事务安全这样的不可能遇不见,我们这一代学习的人还真的是幸运,因为spring提供的声明式事务,我们不用再去苦苦的去写编程式事务,而且,现在spring4全面支持注解开发,我们甚至连配置文件都不用写,加一个注解就引入了spring的事务模块,激动不?</p>
</blockquote></li><li><p><strong>方便集成其他开源框架</strong></p>
<blockquote>
<p>spring最擅长的事情就是整合这使它的生态变的超级庞大</p>
</blockquote></li></ul>
<hr>
<blockquote>
<p>例外给大家推荐一篇很棒的博客,里面详细图文论述了,spring究竟带给了我们什么?</p>
</blockquote>
<p><a href="https://blog.csdn.net/qq_38157516/article/details/81979219">spring实现解耦论述</a></p>
<hr>
<h2 id="注解版spring-ioc怎么玩">注解版Spring-IOC怎么玩?</h2>
<h3 id="组件注册">组件注册</h3>
<blockquote>
<p>只使用IOC,导入Spring-Context就可以</p>
</blockquote>
<pre class="code"><code><dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.7.RELEASE</version>
</dependency></code></pre>
<hr>
<blockquote>
<p><strong>这个过程,我们要注意IOC以下几点</strong></p>
</blockquote>
<ul><li>组件注册的过程中有哪些过滤规则?</li><li>如何控制组件的作用域(单例多例)?</li><li>六种注册组件的方式?</li></ul>
<blockquote>
<p><strong>组件注册及其过滤规则我串联在下面相邻的两部分里,这里先提一下Spring提供的所有过滤规则类型</strong></p>
</blockquote>
<p>在spring启动,开始扫描包,注册组件时,如果我们想按照我们的需求往IOC里面添加组件,就需要指定过滤规则,下面这五种类型的过滤规则,都源于我们在主配置类(相当于配置文件)上添加的<code>@ComponentScan()</code>包扫描注解</p>
<ul><li>按照注解过滤<code>ANNOTATION</code></li></ul>
<pre class="blockcode"><code class="language-java"><code>@ComponentScan(// 这个注解替换了原来配置文件中的包扫描
value="com.changwu.tryspring",
useDefaultFilters=false,
includeFilters = {
@Filter(type = FilterType.ANNOTATION, classes = Service.class)}
)</code></code></pre>
<ul><li>按照给定的类型过滤</li></ul>
<pre class="blockcode"><code class="language-java"><code>@Configuration
@ComponentScan( |
|