Spring学习总结(入门)

本文详细介绍了Spring框架的基本概念,包括如何在XML配置文件中定义bean,以及bean的生命周期和自动装配策略。深入探讨了byName和byType两种装配方式,并解释了在存在多个相同类型bean时可能遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring学习总结(入门)

.xml文件里面放置的是装配的bean
这里是配置Spring的地方,很简单的一点就是使用bean来创建对象.bean里面可以嵌套bean
大概梳理一下脉络就是在主类里面创建了一个userservice对象,这个对象是通过spring,建立的,在test.xml里面,userservive对象指向的是 UserDAO的实现类
这样在建立UserService的时候就会连带的把UserDAO的实现类一起实例化,实例化之后,通过userservice的bean的property即setUserDAO方法.
将这个实例化的类set成功,完成了自动装配


scope属性:生命周期
scope属性的内容其实比较简单,就那么几个类,新连接一个bean的时候可能会重新建立一个,也可能会一直用同一个


autowire属性:自动装配
主要使用byNamebyType两种属性
自动装配 autowire,主要有两种属性,byName,byType…
byName是在UserService里面寻找属性值,比如说这里userService里面有getUserDAO这个方法,那么就开始在test.xml里面寻找这个nameUserDAO的bean,找到则装配…
byType是根据类型来装配,也就是说在主bean UserService里面有getDAO1getDAO2两个属性值,那么就会在xml文件里里面寻找class=XXX.getDAO1/getDAO1的子类.并且自动装配.
byName比较好理解,只要名字起的和要装配的属性一样就完事了.
byType我的理解是根据类来装配,但是这样装配会出现一个问题(看马士兵视频学习时候知道的),如果在xml文件里有两个getDAO1/getDAO1的子类的bean,就会出现找不到具体的类的问题…

   ```
   <!--就像这样装配,两个实现了同一个子类的bean的name不一样,但是class一样,还是会装配失败,这个我认为需要注意一下.-->
    <bean id="userDAO1" class="com.netizen.spring.UserDAOimpl">
    <bean id="userDAO" class="com.netizen.spring.UserDAOimpl">
    </bean>
    <bean id="user" class="com.netizen.spring.UserService" scope="prototype" autowire="byType">
            <!--<property name="userDAO" ref="u"/>-->
    </bean>

   ```

Spring有两种方式比如上面的常见的xml格式.还有下面的这个annotation格式.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:context="http://www.springframework.org/schema/context"
     xsi:schemaLocation="http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
         http://www.springframework.org/schema/context
         http://www.springframework.org/schema/context/spring-context-3.0.xsd">
   <!-- 打开Spring的Annotation支持 -->
   <context:annotation-config/>
   <!-- 设定Spring 去哪些包中找Annotation -->
   <context:component-scan base-package="com.wfg"/>

</beans>

意思就是用注解来做呗…


@Autowired
一般写在set方法上,可以自动装配,默认byType,使用@Qualifier(name)来指定byName.
@Resource
按照名字来寻找,找不到才按类型,可以用Resource(name = ‘’)
@compponent(“name”)
在要调用的类上头写,表示为组件.
xml里写<context:component-scan base-package="com.netizen.spring"表示在这个包里面搜索组件
@pre和@post标签
创建之后毁灭之前和xml的初始化和结束方法标签一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值