码迷,mamicode.com
首页 > 编程语言 > 详细

spring

时间:2019-05-14 14:52:43      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:inter   actions   好的   启动   配置   stc   ace   mybatis   dem   

1、什么是spring?
Spring是轻量级控制反转(IOC)和AOP面向切面的容器框架。他集合了java/javaee全功能的应用解决方案。简化了我们的开发。

2、什么是IOC?
IOC是控制反转的意思,就是控制权反过来交给spring来管理。

什么是控制权呢?
在类和类之间存在控制权,控制权指的是对象的创建和使用,
比如有类 A 和类 B,我们之前的做法是在 A 中调用 B,那么控制权就在 A 中,这样做的耦合度较高,
如果修改了 B,A 也要做相应修改。

引入 Spring 框架后,控制权由 spring 容器来负责。当 A 想使用 B 时,需要由 Spirng 容器通过
配置文件进行注入。这种思想就是 IoC(为了更好的理解,我们可以这样认为,对象创建和使用
的控制权转移到了 Spring 容器,由 Spring 容器来控制)

3、spring 依赖注入的方式有哪些?
spring 怎么实现对象的创建呢?答案就是DI。
DI:依赖注入

1)set方法注入 :

<!-- 注册userService -->
<bean id="userService" class="com.lyu.spring.service.impl.UserService">
    <!-- 写法一 -->
    <!-- <property name="UserDao" ref="userDaoMyBatis"></property> -->
    <!-- 写法二 -->
    <property name="userDao" ref="userDaoMyBatis"></property>
</bean>

2)构造方法注入:

 <!--通过构造方法注入-->
    <bean id="sayHelloAction" class="com.seecen.spring.SayHelloActionSpring">
        <constructor-arg ref="zhHello"></constructor-arg>
    </bean>

3)基于注解的注入:
a)开启注解:

<!--通过注解注入-->
    <context:component-scan base-package="com.seecen"></context:component-scan>

@Controller
public class SayHelloActionSpring {
    //引入的helloBean对象
    @Resource
    private HelloInterface helloBean;


常用的注解:
1)扫描bean组件的注解:
a)@Service 用于Service层
b)@Controller 用于Action层
c)@Repository 用于Dao层
d)@Component 用于其他组件

2)依赖注入的注解:
a)Resource 先按类型,后按名称来匹配
b)AutoWired 先按名称,后按类型来匹配

3)其他注解:
@Scope 等价于<bean scope="">
@PostConstruct 等价于<bean init-method="">
@PreDestroy 等价于<bean destroy-method="">

4、spring对象的生命周期

1)对象什么时候被创建?
spring中的对象默认是不开启延迟加载的,即spring容器一启动,则会创建所有的对象。(好处:只要项目有配置问题可以第一时间发现。启动即会报错,而不需要等到运行)。可以配置:lazy-init="true"

2)对象创建的方式是什么?是单例的吗?还是多实例的?
(验证方式:创建两个对象,比较是否相等)

scope 属性用于设定的创建方式和生命周期
1)single:默认单例
2)prototype: 多实例的
3)request :bean的生命周期与request相同
4)session :与session相同
5)global Session :application

3)对象什么时候被销毁?
bean 对象在 spring 容器关闭的时候被销毁。
Bean 对象的初始化和销毁
init-method 属性用于指定初始化方法
destroy-method 属性用于指定销毁方法,仅适用于 singleton 模式

<bean id="mybean"
lazy-init="true"
scope="prototype"
init-method="myinit"
class="tarena.demo3.MyBean"></bean>

 

spring

标签:inter   actions   好的   启动   配置   stc   ace   mybatis   dem   

原文地址:https://www.cnblogs.com/loyal888/p/10861962.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!