Spring入门+IoC注解详情【依赖注入、整合Junit、配置类】---多以案例讲述(一)

简介: Spring入门+IoC注解详情【依赖注入、整合Junit、配置类】---多以案例讲述

1.Spring 概述


Spring是一站式框架,也就是Spring可以整合其他框架


Spring Ioc : 对象工厂及依赖注入


2 . Ioc概述


1)什么是Ioc?


Ioc是 Inversion Control 的缩写,即"控制反转"。


控制反转:将创建对象的权力,由自己【new】,反转给Spring


我们一般创建一个类对象都会使用new 关键字,new一个对象出来。


而控制反转就是:不在new ,而是直接将实现类对象存入Ioc容器中,从容器中进行调用即可。


Ioc 容器 : 一个以键值对的形式保存实现类对象。通过键的名称,找、调用键对应的值[类]


key = 对类注解声明放入Ioc容器的name名称


value = 注解名称下的实现类对象


图集详解


a5f7e2dec28b4d1184c7ee6ced1ddb7b.png


2)Ioc创建对象基础案例


需求


使用Ioc的方式创建UserService对象,并调用查询所有方法


2.1相关注解说明

@Component("xxx") //注解标明将该类取明为xxx,作为键存入Ioc容器中 
@Configuration  //注解标明该类是一个配置类
@ComponentScan(basePackages = "扫描需要被加载的类所在的包")

2.2图集导航【以User类为例】


5e3e09eb5978402593c7e96f5b8f5ed1.png


  • UserService【接口】
public interface UserService {
    //接口类
    void selectAll();
}

UserServiceImpl【接口实现类】

编写功能接口及其实现类。使用@Component将实现类添加到spring容器。

@Component("userServiceImpl")  //存入Ioc容器中
public class UserServiceImpl implements UserService {
    //实现类
    //查询所有
    public void selectAll() {
        System.out.println("demo01-userService-selectAll");
    }
}

Demo01Configuration【配置类】

编写配置类,并扫描实现类。使用@Configuration声明配置类,使用@ComponentScan进行扫描

@Configuration  //配置类
@ComponentScan(basePackages = "com.czxy.demo01.service") //扫描需要被加载的类所在的包
public class Demo01Configguration {
}

TestDemo01 【测试类。使用ApplicationContext从spring容器中获得实现类。】

public class TestDemo01 {
    //测试类
    public static void main(String[] args) {
        //通过处理注解,获得工厂
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(Demo01Configguration.class);
        //通过工厂,获得mapper
        UserService userServiceImpl = (UserService) applicationContext.getBean("userServiceImpl");
        //调用
        userServiceImpl.selectAll();
    }
}
  • 测试结果


5ce866e5b0694039bc0c9e156c7d1800.png


  • 2.3总结
  • • 配置类必须使用 @Configuration 进行声明
    • @ComponentScan 扫描路径必须是service的包名。

3. 依赖注入

3.1相关注解说明

@Ressource(name="xxx") //xxx表示对应Dao包下@Component("xxx")注解标明的类对象
@Component("xxx") //注解标明将该类取明为xxx,作为键存入Ioc容器中 
@Configuration  //注解标明该类是一个配置类
@ComponentScan(basePackages = "扫描需要被加载的类所在的包")

3.2图集导航【已User类为例】


bcdcc6f92ee1405aa14682e40456b706.png


UserDao【数据访问层】

编写UserDao,并使用@Component

@Component("userDao2")
public class Userdao {
    public void selectAll(){
        System.out.println("dao : selectAll");
    }
}

UserService 【实现类】

编写UserService,并使用@Component

@Component("userService2")
public class UserServiceImpl implements UserService {
    @Override
    public void selectAll() {
        //调用dao
        userdao.selectAll();
        System.out.println("service:selectAll");
    }
}

UserService 【实现类完善】【业务逻辑层】

  • 修改UserService,提供UserDao成员变量,并使用@Resource完成注入
@Component("userService2")
public class UserServiceImpl implements UserService {
    //将userDao1注入给UserDao
    //依赖注入
    @Resource(name = "userDao2") 
    private Userdao userdao ;
    @Override
    public void selectAll() {
        //调用dao
        userdao.selectAll();
        System.out.println("service:selectAll");
    }
}

Demo02Configuration【配置类】

@Configuration  //标注配置类
@ComponentScan(basePackages{"com.czxy.demo02.dao","com.czxy.demo02.service"}) //标注需要被加载的类所在的包进行扫描
public class Demo02Configuration {
}

TestDemo02 【测试类】【表示层】

public class TestDemo02 {
    public static void main(String[] args) {
        //通过处理注解,获得工厂
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(Demo02Configuration.class);
        // //通过工厂,获得mapper
        UserServiceImpl userService2 = applicationContext.getBean("userService2", UserServiceImpl.class);
         //调用
        userService2.selectAll();
    }
}

测试结果


81dfdd35dc0048d7ac70e5d1e73a9884.png


3.3 图集总结


899621e36d704e1d920af83b99c03f31.png



相关文章
|
13天前
|
安全 Java API
深入解析 Spring Security 配置中的 CSRF 启用与 requestMatchers 报错问题
本文深入解析了Spring Security配置中CSRF启用与`requestMatchers`报错的常见问题。针对CSRF,指出默认已启用,无需调用`enable()`,只需移除`disable()`即可恢复。对于`requestMatchers`多路径匹配报错,分析了Spring Security 6.x中方法签名的变化,并提供了三种解决方案:分次调用、自定义匹配器及降级使用`antMatchers()`。最后提醒开发者关注版本兼容性,确保升级平稳过渡。
59 2
|
1月前
|
缓存 Java API
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的配置
本文介绍了在Spring Boot中配置Swagger2的方法。通过创建一个配置类,添加`@Configuration`和`@EnableSwagger2`注解,使用Docket对象定义API文档的详细信息,包括标题、描述、版本和包路径等。配置完成后,访问`localhost:8080/swagger-ui.html`即可查看接口文档。文中还提示了可能因浏览器缓存导致的问题及解决方法。
71 0
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的配置
|
13天前
|
安全 Java 数据库
Spring Security 实战指南:从入门到精通
本文详细介绍了Spring Security在Java Web项目中的应用,涵盖登录、权限控制与安全防护等功能。通过Filter Chain过滤器链实现请求拦截与认证授权,核心组件包括AuthenticationProvider和UserDetailsService,负责用户信息加载与密码验证。文章还解析了项目结构,如SecurityConfig配置类、User实体类及自定义登录逻辑,并探讨了Method-Level Security、CSRF防护、Remember-Me等进阶功能。最后总结了Spring Security的核心机制与常见配置,帮助开发者构建健壮的安全系统。
95 0
|
1月前
|
Java 关系型数据库 数据库
微服务——SpringBoot使用归纳——Spring Boot事务配置管理——Spring Boot 事务配置
本文介绍了 Spring Boot 中的事务配置与使用方法。首先需要导入 MySQL 依赖,Spring Boot 会自动注入 `DataSourceTransactionManager`,无需额外配置即可通过 `@Transactional` 注解实现事务管理。接着通过创建一个用户插入功能的示例,展示了如何在 Service 层手动抛出异常以测试事务回滚机制。测试结果表明,数据库中未新增记录,证明事务已成功回滚。此过程简单高效,适合日常开发需求。
84 0
|
1月前
|
Java 测试技术 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——少量配置信息的情形
本课主要讲解Spring Boot项目中的属性配置方法。在实际开发中,测试与生产环境的配置往往不同,因此不应将配置信息硬编码在代码中,而应使用配置文件管理,如`application.yml`。例如,在微服务架构下,可通过配置文件设置调用其他服务的地址(如订单服务端口8002),并利用`@Value`注解在代码中读取这些配置值。这种方式使项目更灵活,便于后续修改和维护。
28 0
|
1月前
|
SQL Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— application.yml 中对日志的配置
在 Spring Boot 项目中,`application.yml` 文件用于配置日志。通过 `logging.config` 指定日志配置文件(如 `logback.xml`),实现日志详细设置。`logging.level` 可定义包的日志输出级别,例如将 `com.itcodai.course03.dao` 包设为 `trace` 级别,便于开发时查看 SQL 操作。日志级别从高到低为 ERROR、WARN、INFO、DEBUG,生产环境建议调整为较高级别以减少日志量。本课程采用 yml 格式,因其层次清晰,但需注意格式要求。
117 0
|
13天前
|
存储 安全 Java
Spring Security 入门与详解
Spring Security 是 Spring 框架中的核心安全模块,提供认证、授权及防护功能。本文详解其核心概念,包括认证(Authentication)、授权(Authorization)和过滤器链(Security Filter Chain)。同时,通过代码示例介绍基本配置,如 PasswordEncoder、UserDetailsService 和自定义登录页面等。最后总结常见问题与解决方法,助你快速掌握 Spring Security 的使用与优化。
94 0
|
1月前
|
Java 数据库连接 数据库
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——MyBatis 介绍和配置
本文介绍了Spring Boot集成MyBatis的方法,重点讲解基于注解的方式。首先简述MyBatis作为持久层框架的特点,接着说明集成时的依赖导入,包括`mybatis-spring-boot-starter`和MySQL连接器。随后详细展示了`properties.yml`配置文件的内容,涵盖数据库连接、驼峰命名规范及Mapper文件路径等关键设置,帮助开发者快速上手Spring Boot与MyBatis的整合开发。
110 0
|
1月前
|
缓存 Java 应用服务中间件
微服务——SpringBoot使用归纳——Spring Boot集成Thymeleaf模板引擎——依赖导入和Thymeleaf相关配置
在Spring Boot中使用Thymeleaf模板,需引入依赖`spring-boot-starter-thymeleaf`,并在HTML页面标签中声明`xmlns:th="http://www.thymeleaf.org"`。此外,Thymeleaf默认开启页面缓存,开发时建议关闭缓存以实时查看更新效果,配置方式为`spring.thymeleaf.cache: false`。这可避免因缓存导致页面未及时刷新的问题。
47 0
|
1月前
|
Java 数据库 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——指定项目配置文件
在实际项目中,开发环境和生产环境的配置往往不同。为简化配置切换,可通过创建 `application-dev.yml` 和 `application-pro.yml` 分别管理开发与生产环境配置,如设置不同端口(8001/8002)。在 `application.yml` 中使用 `spring.profiles.active` 指定加载的配置文件,实现环境快速切换。本节还介绍了通过配置类读取参数的方法,适用于微服务场景,提升代码可维护性。课程源码可从 [Gitee](https://gitee.com/eson15/springboot_study) 下载。
54 0