Spring6依赖注入-set注入

简介: 记基础Spring6依赖注入-set注入
Set注入,基于set方法实现的,底层通过反射机制调用属性对应的set方法然后给属性赋值。这种方式要求属性必须对外提供set方法。
#pom.xml配置
<!--    打包方式jar-->
    <packaging>jar</packaging>
    <!--配置多个仓库 -->
    <repositories>
        <!-- Spring6 -->
        <repository>
            <id>repository.spring.milestone</id>
            <name>Spring Milestone Repository</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <!-- 依赖-->
    <dependencies>
        <!--  log4j2的依赖-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.19.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j2-impl</artifactId>
            <version>2.19.0</version>
        </dependency>
        <!-- Spring context依赖
             当引入Spring context依赖后,表示将Spring的基础依赖引入
             如果想使用spring的jdbc,或其他的tx,那么还需要再次添加依赖
        -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>6.0.0-M2</version>
        </dependency>
        <!--junit依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
#log4j2.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <loggers>
<!--   level指定日志级别 从低到高 ALL<TRACE<DEBUG<INFO<WARN<ERROR<FATAL<OFF     -->
        <root level="DEBUG"> <!-- DEBUG意思是错误信息从DEBUG开始往右 -->
            <appender-ref ref="spring6log"/>
        </root>
    </loggers>
    <appenders>
<!--        输出日志信息到控制台-->
        <console name="spring6log" target="SYSTEM_OUT">
            <!--        -->
            <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%t] %-3level %logger{1024} - %msg%n"/>
        </console>
    </appenders>
</configuration>

图片.png

#Dao层
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class testDao {
    private static final Logger logger = LoggerFactory.getLogger(testDao.class);//记录SpringTest.class类的日记
    public void insert(){
        logger.info("testDao----");
    }
}
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class UserDao {
    private static final Logger logger = LoggerFactory.getLogger(UserDao.class);//记录SpringTest.class类的日记
    public void insert(){
        logger.info("insert正在被调用----");
    }
}

图片.png

图片.png

#Service层
public class UserService {
    private UserDao userDao;
    private testDao testDao;
    //IDEA生成的set方法符合javabean规范
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
    public void setTestDao(com.spring6.dao.testDao testDao) {
        this.testDao = testDao;
    }
    public void saveUser(){
        //保存用户信息到数据库
        //set注入的话,必须提供一个set方法. Spring容器会调用这个set方法,来给userDao属性赋值。
        userDao.insert();
        testDao.insert();
    }
}

图片.png

#Springconfig.xml文件配置
<!--    id:唯一,
        calss:类的全限定名称
-->
<!--    配置dao-->
    <bean id="UserDaobean" class="com.spring6.dao.UserDao"></bean>
    <bean id="testDaobean" class="com.spring6.dao.testDao"></bean>
<!--    配置server-->
    <bean id="UserServicebean" class="com.spring6.service.UserService"> <!--创建UserServicebean对象-->
<!--       Spring调用对应的set方法,需配置property标签-->
<!--        name属性怎么指定值:set方法的方法名,去掉set,把首字母改为小写-->
<!--        ref引用,ref指定的是哟啊注入的bean的id-->
        <property name="userDao"  ref="UserDaobean"></property>
        <property name="testDao" ref="testDaobean"></property>
    </bean>

图片.png

#测试类
public class Springtest {
    @Test
    public void testSet(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Springconfig.xml");
        UserService userService =applicationContext.getBean("UserServicebean", UserService.class);
        userService.saveUser();
    }
}

图片.png

目录
相关文章
|
3月前
|
XML Java 测试技术
Spring Boot中的依赖注入和控制反转
Spring Boot中的依赖注入和控制反转
|
2月前
|
XML Java 数据格式
Spring5入门到实战------4、IOC容器-Bean管理XML方式、集合的注入(二)
这篇文章是Spring5框架的实战教程,主题是IOC容器中Bean的集合属性注入,通过XML配置方式。文章详细讲解了如何在Spring中注入数组、List、Map和Set类型的集合属性,并提供了相应的XML配置示例和Java类定义。此外,还介绍了如何在集合中注入对象类型值,以及如何使用Spring的util命名空间来实现集合的复用。最后,通过测试代码和结果展示了注入效果。
Spring5入门到实战------4、IOC容器-Bean管理XML方式、集合的注入(二)
|
2月前
|
Java Spring 容器
彻底改变你的编程人生!揭秘 Spring 框架依赖注入的神奇魔力,让你的代码瞬间焕然一新!
【8月更文挑战第31天】本文介绍 Spring 框架中的依赖注入(DI),一种降低代码耦合度的设计模式。通过 Spring 的 DI 容器,开发者可专注业务逻辑而非依赖管理。文中详细解释了 DI 的基本概念及其实现方式,如构造器注入、字段注入与 setter 方法注入,并提供示例说明如何在实际项目中应用这些技术。通过 Spring 的 @Configuration 和 @Bean 注解,可轻松定义与管理应用中的组件及其依赖关系,实现更简洁、易维护的代码结构。
36 0
|
2月前
|
缓存 Java 数据库连接
Spring Boot 资源文件属性配置,紧跟技术热点,为你的应用注入灵动活力!
【8月更文挑战第29天】在Spring Boot开发中,资源文件属性配置至关重要,它让开发者能灵活定制应用行为而不改动代码,极大提升了可维护性和扩展性。Spring Boot支持多种配置文件类型,如`application.properties`和`application.yml`,分别位于项目的resources目录下。`.properties`文件采用键值对形式,而`yml`文件则具有更清晰的层次结构,适合复杂配置。此外,Spring Boot还支持占位符引用和其他外部来源的属性值,便于不同环境下覆盖默认配置。通过合理配置,应用能快速适应各种环境与需求变化。
35 0
|
2月前
|
安全 Java 开发者
开发者必看!@Resource与private final的较量,Spring Boot注入技巧大揭秘,你不可不知的细节!
【8月更文挑战第29天】Spring Boot作为热门Java框架,其依赖注入机制备受关注。本文通过对比@Resource(JSR-250规范)和@Autowired(Spring特有),并结合private final声明的字段注入,详细探讨了两者的区别与应用场景。通过示例代码展示了@Resource按名称注入及@Autowired按类型注入的特点,并分析了它们在注入时机、依赖性、线程安全性和单一职责原则方面的差异,帮助开发者根据具体需求选择最合适的注入策略。
35 0
|
2月前
|
设计模式 自然语言处理 Java
简单了解下Spring中的各种Aware接口实现依赖注入
在Spring框架中,Aware接口是一组用于提供特定资源或环境信息的回调接口。这些接口被设计用来允许Bean获取对Spring容器或其他相关资源的引用,并在需要时进行适当的处理。
24 2
|
2月前
|
自然语言处理 Java 开发者
简单了解下Spring中的各种Aware接口实现依赖注入
【8月更文挑战第21天】在Spring框架中,Aware接口系列是一种特殊的机制,它允许Bean在初始化过程中获取到Spring容器或容器中的特定资源,从而实现了更加灵活和强大的依赖注入方式。本文将围绕Spring中的各种Aware接口,详细探讨它们如何帮助开发者在工作和学习中更好地实现依赖注入。
56 0
|
3月前
|
缓存 Java Spring
Spring循环依赖问题之Spring不支持构造器内的强依赖注入如何解决
Spring循环依赖问题之Spring不支持构造器内的强依赖注入如何解决
|
3月前
|
Java Spring
spring注入的几种方式
spring注入的几种方式
20 0
|
4月前
|
设计模式 Java 测试技术
Spring Boot中的依赖注入详解
Spring Boot中的依赖注入详解
下一篇
无影云桌面