java框架spring依赖注入的6种方式

spring中如何给对象的属性复制?

1)通过构造方法
2)通过set方法给属性注入值
3)p命名空间
4)自动转配(了解即可,不推荐使用)
5)注解
6)通过接口

准备工作(模拟业务方法)Action-->service-->dao

1)UserDao:

    p<span style="font-family:Courier New;">ublic class UserDao {  
        public void save(){  
            System.out.println("save方法");  
        }  
    }</span>

2)UserService:

    p<span style="font-family:Courier New;">ublic class UserService {  
        private UserDao userDao;  
        public void setUserDao(UserDao userDao) {  
            this.userDao = userDao;  
        }  
        public void save(){  
            userDao.save();  
        }  
    }</span>

3)UserAction:
 

   <span style="font-family:Courier New;">public class UserAction {  
        private UserService userService;  
        public void setUserService(UserService userService) {  
            this.userService = userService;  
        }  
        public String execute(){  
            userService.save();  
            return null;  
        }  
    }</span>

4)App测试类:

    public class App {  
        ApplicationContext ac=new ClassPathXmlApplicationContext("cn/itcast/property/bean.xml");  
        @Test  
        public void test(){  
            UserAction userAction=(UserAction) ac.getBean("userAction");  
            System.out.println(userAction.execute());  
        }  
    }

5)bean.xml的约束

    <?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:p="http://www.springframework.org/schema/p"  
        xmlns:context="http://www.springframework.org/schema/context"  
        xsi:schemaLocation="  
            http://www.springframework.org/schema/beans  
            http://www.springframework.org/schema/beans/spring-beans.xsd  
            http://www.springframework.org/schema/context  
            http://www.springframework.org/schema/context/spring-context.xsd">  
    </beans>

方式一.set方法注入

1)必须保证有set方法

    <bean id="userDao" class="cn.itcast.property.UserDao"></bean>  
        <bean id="userService" class="cn.itcast.property.UserService">  
            <property name="userdao" ref="userDao"></property>  
        </bean>  
        <bean id="userAction" class="cn.itcast.property.UserAction">  
            <property name="userService"  ref="userService"></property>  
        </bean>

方式二.内部bean(因为是内部bean 因此如果还有一个action 就不能引用里面的service方法)

    bean id="userAction" class="cn.itcast.property.UserAction">  
            <property name="userService">  
                <bean id="userService" class="cn.itcast.property.UserService">  
                    <property name="userDao">  
                        <bean id="userDao" class="cn.itcast.property.UserDao"></bean>  
                    </property>  
                </bean>  
            </property>  
        </bean>

方式三.p命名空间

    <bean id="userDao" class="cn.itcast.property.UserDao"></bean>  
        <bean id="userService" class="cn.itcast.property.UserService" p:userdao-ref="userDao"></bean>  
        <bean id="userAction" class="cn.itcast.property.UserAction" p:userService-ref="userService"></bean>

方式四:自动装配(不推荐使用)

<!-- 根据“名称”自动装配: userAction注入的属性,会去ioc容器中自动查找与属性同名的对象 -->

    <bean id="userDao" class="cn.itcast.property.UserDao" ></bean>  
         <bean id="userService" class="cn.itcast.property.UserService" autowire="byName"></bean>  
         <bean id="userAction" class="cn.itcast.property.UserAction" autowire="byName"></bean>

方式五:注解

使用注解步骤:

1)先引入context名称空间

xmlns:context="http://www.springframework.org/schema/context"

2)开启注解扫描

 <context:component-scanbase-package="cn.itcast.e_anno2"></context:component-scan>

3)使用注解

通过注解的方式,把对象加入ioc容器。

创建对象以及处理对象依赖关系,相关的注解:

@Component   指定把一个对象加入IOC容器

@Repository   作用同@Component; 在持久层使用

@Service      作用同@Component; 在业务逻辑层使用

@Controller    作用同@Component; 在控制层使用

@Resource     属性注入

配置文件中开启扫描机制

    <!-- 开启扫描机制 -->  
         <context:component-scan base-package="cn.itcast.property"></context:component-scan>

UserDao使用注解(使用注解就不用set方法了)

    @Repository  
    public class UserDao {  
        public void save(){  
            System.out.println("save方法");  
        }  
    }

UserService使用注解:

    @Service  
    public class UserService {  
        @Resource  
        private UserDao userDao;  
        public void save(){  
            userDao.save();  
        }  
    }

UserAction使用注解

    @Controller  
    public class UserAction {  
        @Resource  
        private UserService userService;  
        public String execute(){  
            userService.save();  
            return null;  
        }  
    }

方式:接口方式(interface injection)

接口注入指的就是在接口中定义要注入的信息,并通过接口完成注入。结合前面的示例,其具体步骤如下。
(1)编写一个接口IBusiness,各种数据库的注入将通过这个接口进行。IBusiness.java的示例代码如下:
//******* IBusiness.java**************
}
(2)任何想要使用数据库实例的类都必须实现这个接口,业务逻辑类Business实现这个接口IBusiness。Business.java的示例代码如下:
//******* Business.java**************
this.db = db;
}
……
//根据注入的数据库类,从×××数据库中获取数据
public void getData() {
……
db.getData();
……
}
}
(3)编写测试类TestBusiness。TestBusiness.java的示例代码如下:
//******* TestBusiness.java**************
public class TestBusiness {
private Business business = new Business();
……
//根据注入的数据库类,从Oracle数据库中获取数据
public void getData() {
……
business. createDI (new OracleDataBase());
business.getData();
……
}
}
如果要完成依赖关系注入的对象,必须实现IBusiness接口。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库
, 对象
, class
, 接口
, 代码
属性
spring框架依赖注入、spring 依赖注入方式、spring依赖注入的方式、spring 依赖注入、spring 泛型依赖注入,以便于您获取更多的相关知识。

时间: 2024-08-17 15:09:40

java框架spring依赖注入的6种方式的相关文章

Spring依赖注入的两种方式(根据实例详解)

1,Set注入    2,构造注入 Set方法注入: 原理:通过类的setter方法完成依赖关系的设置 name属性的取值依setter方法名而定,要求这个类里面这个对应的属性必须有setter方法. Set方法注入时spring中配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans&qu

详析Spring中依赖注入的三种方式_java

前言 平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中.依赖注入的另一种说法是"控制反转",通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做. 在Sprin

spring依赖注入的3种实现方式

 在讲解依赖注入的3种实现方式之前,这里先澄清一下依赖注入的意义:让组件依赖于抽象,当组件要与其他实际对象发生依赖关系时,通过抽象来注入依赖的实际对象.     依赖注入的3种实现方式分别是:接口注入(interface injection).Set注入(setter injection)和构造注入(constructor injection).接下来笔者还将主要通过举例的方式,把依赖注入的3种实现方式介绍给读者.     3.2.1  接口注入(interface injection)    

spring依赖注入测试时出错

问题描述 spring依赖注入测试时出错 错误如下: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'analysisService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationExcepti

spring 依赖注入的困惑 关于子类和父类

问题描述 spring 依赖注入的困惑 关于子类和父类 有一个Son类 package cn.extend; import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; public class Son extends Father { } 还有一个父类Father

Spring事务配置的五种方式和spring里面事务的传播属性和事务隔离级别

spring事务配置的五种方式: 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的. 总结如下: Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource.TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分. DataSource.TransactionManager这两部

【编程】java jdbc/ojdbc 链接oracle的三种方式

  本文是一篇学习笔记,学习如何通过java jdbc /ojdbc 连接oracle的几种方式.一 使用方法方法一:使用service_name 连接oracle  jdbc:oracle:thin:@//:/ 例如: jdbc:oracle:thin:@//10.10.10.1:1521/TDB注意这里的格式,@后面有//, 这是与使用SID的主要区别.对于集群来说,每个节点的SID 是不一样的,但是SERVICE_NAME 确可以包含所有节点. 方法二: 使用SID 连接oracle jd

Java代码实现依赖注入

这里将模仿Spring实现一种基于xml配置文件的依赖注入机制.文件中将实现3中注入,一是单值注入 ,包括int,float,double,char等,也包括String注入:二是Java容器注入,包括List,Set,Map三种 容器的注入,最后一种是java bean对象注入. 实现的机制是,使用Dom4j对xml配置文件进行解析,这里使用dom4j的Element Handler机制,一种类 似与责任链模式的实现机制:对于java对象的构建使用反射机制,这里主要是针对得到的类的Field进

Spring中接口注入的三种方式

Type1 接口注入 我们常常借助接口来将调用者与实现者分离.如: public class ClassA { private InterfaceB clzB; public init() { Ojbect obj = Class.forName(Config.BImplementation).newInstance(); clzB = (InterfaceB)obj; } -- } 上面的代码中,ClassA依赖于InterfaceB的实现,如何获得InterfaceB实现类的实例?传统的方法