Spring6依赖注入-set注入

举报
QGS 发表于 2022/12/12 22:17:44 2022/12/12
【摘要】 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>

#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正在被调用----");
    }
}

#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();
    }

}

#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>

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。