SpringDI--依赖注入(注解方式)

Spring中提供一些作用在类上:

@Component   //每个层都可以,作用在类上
@Controller    //作用在web层
@Service       //作用在业务层
@Repository    //作用在持久层

这三个注解都放在每层的类上面,会创建对应的对象,Component可以每层类上但建议使用其他三个注解增强

属性注解:

@Value            //用于注入基本类型
@Autowired        //用于对象注入,默认按类型进行自动装配
@Qualifier        //用于对象注入,按名称注入
@Resource         //相当于@Autowired与Qualifier一起使用,JDK提供的注解,Spring支持

作用范围

//Bean的作用范围注解,作用在类上,singleton:单例(默认)    prototype:多例
@Scope(value="prototype")

//Bean的生命周期注解,作用在方法上
@PostConstruct     //相当于init-method
@PreDestroy        //相当于destroy-method

实现注解方式

UserService:

package com.spring.demo04;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * 组件注解,标记该类
 * 相当于:<bean id="userService" class="com.spring.demo04.UserService">
 */
@Component(value="userService")
public class UserService {
    //属性注解:基本数据类型
    @Value(value="业务层")
    private String name;

    //@Resource(name="userDao")    JDK提供的注解,spring支持
    //对象注解:按类型自动装配
    @Autowired
    @Qualifier(value="userDao")    //也可以不写,一旦写名称必须一致
    private UserDao userDao;

    public void save() {
        System.out.println(name+"启动。。。");
        userDao.save();
    }
}

UserDao:

package com.spring.demo04;

import org.springframework.stereotype.Repository;

/**
 * UserDao交给IOC容器
 * 相当于:<bean id="userDao" class="com.spring.demo04.UserDao">
 */
@Repository(value="userDao")
public class UserDao {

    public void save() {
        System.out.println("持久层启动。。。。");
    }
}

配置文件设置扫描该类属于的包:

<?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.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 开启注解的扫描:扫描该包下的所有类 -->
    <context:component-scan base-package="com.spring.demo04" />

</beans>

测试:

package com.spring.demo04;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestDI {
    @Test
    public void run() {
        //创建容器对象,加载配置文件
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        //获取userService对象
        UserService userService = (UserService) context.getBean("userService");
        //调用save方法
        userService.save();
    }
}

运行结果:

原文地址:https://www.cnblogs.com/jumpkin1122/p/11623808.html

时间: 2024-10-17 02:40:50

SpringDI--依赖注入(注解方式)的相关文章

Spring 依赖注入的方式

Spring 支持3中依赖注入的方式 1.属性注入  通过setter 方法注入Bean的属性或依赖的对象. <bean id = " " class = " "> <property name = " " value = " "> </property>     <property name = " " value = " "> <

spring 配置bean的方法及依赖注入发方式

Bean 的配置方式:通过全类名(反射).通过工厂方法(静态工厂方法 & 实例工厂方法).FactoryBean 这里依据全类名配置bean <bean id="helloWord" class="com.spring.HelloWord"> <property name="userName" value="springsss"></property> </bean> 依

依赖注入及AOP简述(五)——依赖注入的方式 .

二.依赖注入的应用模式 前面我们了解了依赖注入的基本概念,也对一些依赖注入框架进行了简单的介绍,这一章我们主要来讨论作为开发者如何利用依赖注入框架来实现依赖注入的设计思想. 1.     依赖注入的方式 前面我们提到,所谓“依赖”,最简单地去解释就是一个Java类里的成员变量.我们都知道,给一个类中的私有成员变量赋值的方法通常有:通过Constructor构造方法.通过Setter方法.通过反射机制将私有变量的可见性设为true这三种方法.同样道理,依赖注入框架也是利用这三种方式来完成依赖对象的

MVVM模式用依赖注入的方式配置ViewModel并注册消息

最初的想法 这次主要讨论下给View指定ViewModel的事情.一般来说给View指定ViewModel常用的方式有两种,一种是在View的后台代码中写DataContext = new ViewModel(),还有一种是在XAML中指定View的DataContext.这两种方式都使得View对ViewModel产生了依赖,这种情况下可以考虑用依赖注入的方式使取消View对ViewModel的直接依赖.依赖注入一般来说可以通过构造函数注入.通过设置属性注入,这两种方法对于View来说都不合适

spring依赖注入的方式(一)

为了方便类的管理,spring提供了依赖注入的思想:类的实例化不由程序员控制,而是交给sprig容器进行管理. spring提供了多种类型的注入方式---注解.xml注入: 1  注解注入 有两种:@Autowired @Resource.两种都可以实现注入,但是二者的差别也很明显. @Resource 默认按照名称注入,在找不到名称的时候,会继续通过类型匹配: @Autowired 默认按照类型注入: @Resource 注解是由J2EE提供,而@Autowired是由spring提供,故为了

Java Spring各种依赖注入注解的区别

Spring对于Bean的依赖注入,支持多种注解方式: @Resource javax.annotation JSR250 (Common Annotations for Java) @Inject javax.inject JSR330 (Dependency Injection for Java) @Autowired org.springframework.bean.factory Spring 直观上看起来,@Autowired是Spring提供的注解,其他几个都是JDK本身内建的注解,

自定义Spring--DI依赖注入

1.框架思想 IoC(Inversion of Control,控制反转,反向控制),或者成为DI(Dependency Injection,依赖注入). 在传统程序中,相互的依赖性是固定在程序中的.程序的运行也是一步一步的,完全按照程序代码执行,根据代码就能知道程序怎样运行. 在Spring中程序间的依赖关系并不是直接写在程序中,而是配置在Spring文件中,有Spring在运行时配置的.在编译阶段,既没有实例化对象,也没有设置依赖关系,而是把依赖关系交给Spring,有Spring在运行阶段

EntityFramework Core依赖注入上下文方式不同造成内存泄漏了解一下?

前言 这个问题从未遇见过,是一位前辈问我EF Core内存泄漏问题时我才去深入探讨这个问题,刚开始我比较惊讶,居然还有这种问题,然后就有了本文,直接拿前辈的示例代码并稍加修改成就了此文,希望对在自学EF Core过程中的童鞋能有些许帮助. EntityFramework Core内存泄漏回顾 接下来我将用简单示例代码来还原整个造成EntityFramework Core内存泄漏的过程,同时在这个过程中您也可思考一下其中的原因和最终的结果是否一致. public class TestA { pub

spring学习 五 依赖注入的方式

依赖注入有两种方式: 1 构造注入,如果<bean>标签下使用<contructor-arg>,则是构造注入 2 setter注入,就是调用setter方法注入,如果<bean>标签下使用<property>标签,就是setter注入 2.1: 如果属性是基本数据类型或 String 等简单类型 <bean id="peo" class="com.bjsxt.pojo.People"> <proper

依赖注入的方式测试ArrayList和LinkedList的效率

先贴结果 项目结构 使用配置文件的方式 package com.baobaotao1; import java.util.Date; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { //往这个类里面注入