当前位置: 首页 > news >正文

Spring 注解开发下的依赖注入(自动装配)(引用类型)(普通类型)(加载properties文件)

必读: 

1.Spring注解开发中的东西是为了让我门加速开发的,他对原始的内容进行了阉割,也就是没有必要的功能他就没有做,只做了最快速,最好用的,也就是用自动装配替代了Setter与构造器注入

注入引用类型

1.使用@Autowired注解开启自动装配模式(按类型)

注意:自动装配给予反射设计创建对象并暴力反射对应属性为私有属性初始化数据,因此无需提供Setter方法

注意:自动装配简易使用无参构造方法创建对象(默认),如果不提供对应构造方法,晴提供唯一的构造方法

2.使用@Qualifier注解开启指定名称装配bean

注意:@Qualifier注解无法单独使用,必须配合@Autowired注解使用

注入普通类型

1.使用@Value()注解开注入普通类型

@Value("${name}")   (注入properties文件的格式)

@Value("20")             (注入普通类型格式)

加载properties文件

使用@PropertySource({"jdbc.properties","jdbc2.properties"})

注解加载properties配置文件,

注意:路径仅支持单一文件配置,多文件使用数组格式进行配置,不允许使用通配符

注入引用类型(案例)

BookDaoImpl (dao层实现类1)

package com.itheima.dao.impl;

import com.itheima.dao.BookDao;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Repository;

@Repository("bookDao")
public class BookDaoImpl implements BookDao {

    public void save() {
        System.out.println("bookDao1 save ...");
    }

}

BookDaoImpl2 (dao层实现类2)

package com.itheima.dao.impl;

import com.itheima.dao.BookDao;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Repository;

@Repository("bookDao2")
public class BookDaoImpl2 implements BookDao {

    public void save() {
        System.out.println("bookDao2 save ...");
    }
}

BookServiceImpl(Service层实现类)

package com.itheima.service.impl;

import com.itheima.dao.BookDao;
import com.itheima.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

@Service
public class BookServiceImpl implements BookService {

    @Autowired                //自动装配,暴力装值,不需要Setter方法,自动注入,但是必须是唯一,不唯一的化,则就按名称
    @Qualifier("bookDao2")    //指定加载的bean类型(如果有很多相同类型的bean,则需要指定加载的bean名称,此注解依赖于@Autowired)
    private BookDao bookDao;

    @Override
    public void save() {
        System.out.println("Service save...");
        bookDao.save();
    }
}

app(实现类)

package com.itheima;

import com.itheima.config.SpringConfig;
import com.itheima.service.BookService;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class App2 {
    public static void main(String[] args) {

        //1.加载配置类
        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);

        //2.获取bean
        BookService service = ctx.getBean(BookService.class);

        //输出bean
        service.save();

    }
}

效果1(指定装配相同引用类型BookDaoImpl ):

 效果2(指定装配相同引用类型BookDaoImpl2):

注入普通类型(案例)

BookDaoImpl (dao层实现类)

package com.itheima.dao.impl;

import com.itheima.dao.BookDao;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Repository;

@Repository("bookDao")
public class BookDaoImpl implements BookDao {

    @Value("${name}")
    private String name;

    @Value("20")
    private Integer age;


    public void save() {
        System.out.println("bookDao1 save ..."+name+"+"+age+"");
    }

}

BookServiceImpl(Service层实现类)

package com.itheima.service.impl;

import com.itheima.dao.BookDao;
import com.itheima.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

@Service
public class BookServiceImpl implements BookService {

    @Autowired                //自动装配,暴力装值,不需要Setter方法,自动注入,但是必须是唯一,不唯一的化,则就按名称
    @Qualifier("bookDao")    //指定加载的bean类型(如果有很多相同类型的bean,则需要指定加载的bean名称,此注解依赖于@Autowired)
    private BookDao bookDao;

    @Override
    public void save() {
        System.out.println("Service save...");
        bookDao.save();
    }
}

app(实现类)

package com.itheima;

import com.itheima.config.SpringConfig;
import com.itheima.service.BookService;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class App2 {
    public static void main(String[] args) {

        //1.加载配置类
        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);

        //2.获取bean
        BookService service = ctx.getBean(BookService.class);

        //输出bean
        service.save();

    }
}

SpringConfig (Spring Java 类配置文件,加载properties文件)

package com.itheima.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;


@Configuration                       //代表了这是个配置类,以此与applicationContext.xml基础配置文件相当
@ComponentScan({"com.itheima"})      //包扫描  底层为数组,支持通配符
@PropertySource({"jdbc.properties","jdbc2.properties"})   //加载properties文件,配置文件多,底层为数组,不支持通配符
public class SpringConfig {

}

properties文件

效果(内容含义普通类型的value注入问题,及如何把加载的properties文件中的值当道value之中):

 小结:

自动装配

    1.引用类型

        @Autowired

        @Qualifier

    2.普通类型

        @Value

读取properties文件

    @PropertySource

相关文章:

  • 黄冈网站推广收费标准/农夫山泉软文300字
  • 行业门户网站设计/58百度搜索引擎
  • 网站建设的电话/计算机培训课程
  • wordpress原生评论/账号权重查询入口站长工具
  • 如何制作效果图/手机优化大师
  • 涿州是住房和城乡建设局网站/个人永久免费自助建站
  • 【IVI】车载设备硬件抽象层VHAL
  • docker学习-容器中的进程
  • 【登录界面】vue、element-ui登录界面模板
  • Bug分支
  • Elastic认证考试大纲(8.1版本)全方位分析(难度、考试频率、得分指数、综合分析等)
  • 在滴滴和字节跳动干了 2 年测试开发,太真实…
  • Spring boot 使用QQ邮箱进行一个验证登入
  • d你好Arduino
  • 将springboot项目部署到云服务器中,将vue项目部署到nginx中
  • 带你吃透Servlet核心编程下篇(完整图文教程)
  • Go语言详解
  • 初窥string(1)——string的基本使用