Spring:Java类配置


学习视频来自于:秦疆(遇见狂神说)Bilibili地址
他的自学网站:kuangstudy

但行好事,莫问前程


一、Java类配置Spring

1.1 介绍

我们现在要完全不使用Spring的xml配置了,全权交给Java来做!
JavaConfig是Spring的一个子项目,在Spring4之后,它成为了一个核心功能!
使用AnnotationConfigApplicationContext来读取配置
在这里插入图片描述

1.1.1 @Configuration的作用

@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。

  1. @Configuration 这个也会被Spring容器托管 注册到容器中 因为它本来就是一个@Component
  2. @Configuration 代表这是一个配置类,就和之前的xml配置文件一样

1.1.2 @Bean的作用

将这个类或者方法注册到spring IoC容器中,这个配置就等同于之前在xml里的配置

<beans>
    <bean id="getUser" class="pers.tianyu.pojo.User"/>
</beans>
  1. 注册一个bean,就相当于之前写的一个bean标签
  2. 这个方法的名字(getUser)就相当于bean标签中的id
  3. 这个方法的返回值(User)就相当于bean标签中的class属性

1.1.3 @componentscan的作用

@ComponentScan告诉Spring 哪个packages 用注解标识的类 ,会被spring自动扫描并且装入bean容器。

如果你有个类用@Controller注解标识了,那么配置类不加上@ComponentScan指定包,无法自动扫描该controller,那么该Controller就不会被spring扫描到,更不会装入spring容器中,因此你配置的这个Controller也没有意义。

1.2 使用

1.2.1 方式一

在配置类中写方法

实体类

public class User {
    private String name;

    public String getName() {
        return name;
    }
    @Value("天宇")
    public void setName(String name) {
        this.name = name;
    }
}

配置文件

@Configuration // 代表这是一个Spring的配置类
public class JavaConfig {
    @Bean
    public User getUser() {
        return new User();
    }
}

测试类

public class UserTest {
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(JavaConfig.class);
        User user = context.getBean("getUser", User.class);
        System.out.println(user.getName());
    }
}

1.2.3 方式二

使用注解和自动扫描

实体类

@Component(value = "getUser")
public class User {
    private String name;

    public String getName() {
        return name;
    }
    @Value("天宇")
    public void setName(String name) {
        this.name = name;
    }
}

配置文件

@Configuration // 代表这是一个Spring的配置类
@ComponentScan("pers.tianyu.pojo") // 需要扫描的包
public class JavaConfig {

}

测试类

public class UserTest {
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(JavaConfig.class);
        User user = context.getBean("getUser", User.class);
        System.out.println(user.getName());
    }
}

1.3 @Import的作用

传入其他自定义配置类

自定义配置类

@Configuration
public class UserConfig {

    @Bean
    public User getUser() {
        return new User();
    }
}

主配置类

@Configuration // 代表这是一个Spring的配置类
@Import(value = UserConfig.class) // 加载自定义配置类
public class JavaConfig {

}

实体类

public class User {
    private String name;

    public String getName() {
        return name;
    }
    @Value("天宇")
    public void setName(String name) {
        this.name = name;
    }
}

测试类

public static void main(String[] args) {
//        如果完全使用配置类的方式去做,我们就只能通过ApplicationContext 上下文来获取容器,通过配置类的class对象加载
    ApplicationContext context = new AnnotationConfigApplicationContext(JavaConfig.class);
    User user = context.getBean("getUser", User.class);
    System.out.println(user.getName());

}

1.4 @PropertySource(“mysql.properties”)

mysql.properties

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/smbms?userUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=GMT%2B8
username=root
password=root

maven

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.11</version>
</dependency>

配置文件

@Configuration
@PropertySource("mysql.properties")
public class MySQLConfig {
    @Value("${driverClassName}")
    private String driverClassName;
    @Value("${url}")
    private String url;
    @Value("${username}")
    private String username;
    @Value("${password}")
    private String password;

    @Bean
    public DruidDataSource getDruidDataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
}

测试

public class UserTest {
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(MySQLConfig.class);
        DataSource bean = context.getBean("getDruidDataSource", DataSource.class);
        System.out.println(bean);

    }
}
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Redis是一个用于在Java应用中操作Redis数据库的框架。它提供了一种方便的方式来集成和使用Redis,使得开发人员可以更轻松地使用Redis的各种功能。 在使用Spring Redis时,我们首先需要添加相关的依赖到项目的pom.xml文件中。其中包括spring-boot-starter-data-redis和Lettuce(或Jedis)等必要的依赖。 接下来,在Spring配置文件中进行相应的配置。首先,我们需要配置Redis连接工厂,指定Redis服务器的地址和端口号。可以通过RedisStandaloneConfiguration来实现这一功能。 然后,我们需要配置RedisTemplate,这个模板Spring Redis的核心,用于执行Redis的各种操作,如存储、读取、删除等。我们可以使用StringRedisTemplate或RedisTemplate来创建模板对象,并将Redis连接工厂设置给它。 在配置完RedisTemplate之后,我们还可以配置其他的一些属性,例如序列化方式、连接池配置等。这些属性可以通过RedisStandaloneConfiguration的setter方法来设置。 最后,在需要使用Redis的地方,我们可以通过@Autowired注解将RedisTemplate注入到对应的中,然后就可以使用RedisTemplate来执行各种Redis操作了。 总的来说,Spring Redis的Java配置主要包括添加相关的依赖、配置Redis连接工厂、配置RedisTemplate以及使用RedisTemplate执行操作等步骤。通过这些配置,我们可以方便地在Java应用中使用Redis数据库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值