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

Posted jumpkin1122

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();
    
View Code

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("持久层启动。。。。");
    
View Code

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

技术图片
<?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>
View Code

测试:

技术图片
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();
    
View Code

运行结果:

技术图片

 

以上是关于SpringDI--依赖注入(注解方式)的主要内容,如果未能解决你的问题,请参考以下文章

SpringDI 依赖注入传递参数的方式

SpringDI依赖注入

注意细节,阿里架构师一文详解SpringDI的四种依赖注入方式

Spring 依赖注入(DI)详解 [Spring][依赖注入的 6 种实现方式][setter注入][构造器注入][注解注入][自动装配注入][静态工厂注入][实例工厂注入]

Spring学习一(依赖注入/Bean/注解等)

Spring第七弹—依赖注入之注解方式注入及编码解析@Resource原理