Spring的注入方式

1.set注入

    1.定义一个属性,给该属性添加set方法。

    2.在spring的配置文件中创建bean(该属性所属的类),然后在bean中添加<property> 标签,name的值是该属性,ref的值是引用其他bean。如<property name="accountDao" ref=“accountDaoB”>

                                    <bean id="accountDaoB" ......>

注意(这个也是set注入的原理):属性名和bean中的name的无关;spring会将name值的每个单词首字母转换成大写,然后再在前面拼接上”set”构成一个方法名,然后去对应的类中查找该方法,通过反射调用,实现注入;

        在action中注入service是特别的,在配置action标签时是没有service这个属性的,并且action类中的属性名必须和service对应的bean的id值相同,不然无法注入。

你可以这样记:name生成方法--->setXXX----> 属性    (详细一点的解析:spring根据name的值生成set方法,然后到对应的类中查找该方法,如果找到了,则通过该方法给属性赋值)

推荐文章:https://blog.youkuaiyun.com/a909301740/article/details/78379720

2.构造方法注入

    1.在spring配置文件中<bean>标签中添加<constructor-arg>标签,使用ref属性引用其他的Dao 类的bean

    2.在需要注入的类中添加一个带参数的构造方法。

    例如:<!-- 注册userService -->
                <bean id="userService" class="com.lyu.spring.service.impl.UserService">
                    <constructor-arg ref="userDaoJdbc"></constructor-arg>
                </bean>
            <!-- 注册jdbc实现的dao -->

            <bean id="userDaoJdbc" class="com.lyu.spring.dao.impl.UserDaoJdbc"></bean>

            ------------------------------------------------------------------------------------------

            private IUserDao userDao;

            public UserService(IUserDao userDao) {
                this.userDao = userDao;

            }

    注意:构造方法如何写,取决于spring配置文件中<constructor-arg>的个数,如果有一个引用,则参数只能有一个,有几个引用,构造方法中的参数就有几个,详细的请看一下的推荐文章。

推荐文章:https://blog.youkuaiyun.com/a909301740/article/details/78379720

3.基于注解注入

    1.在配置文件中配置bean,并且开启组件扫描,例如:

        <context:component-scan base-package="com.aaa" />

    2.使用@Autowired或@Resource注入

注意:

    关于@Repository、@Service 和 @Controller 和 @Component四个注解的使用情形

在持久层、业务层和控制层分别采用 @Repository、@Service 和 @Controller 对分层中的类进行注释,而用 @Component 对那些比较中立的类进行注释.这里就是说把这个类交给Spring管理,重新起个名字叫userManager,由于不好说这个类属于哪个层面,就用@Component.

推荐文章:https://blog.youkuaiyun.com/u013412772/article/details/73741710

4.静态工厂注入(不常用)

    1.创建一个工厂类,类中有一个静态的方法获取dao

    2.在spring配置文件中配置dao的bean,并且在该bean配置factory-method属性,其他的Service层的bean引用该dao的bean

    3.使用set方法注入

推荐文章:https://blog.youkuaiyun.com/shadow_zed/article/details/72566611

5.实例工厂注入(不常用)

    和静态工厂差不多,只是获取dao的方法不是静态的和多配置了一个工厂类的bean(因为不是静态的了)。其他的都一样。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值