Spring新注解的示例

Spring的新注解

@Configuration

1.1 作用
用于指定当前类是一个Spring的配置类,当创建容器的时候会从该类上加载注解。获取容器的时候需要使用AnnotationApplicationContext(有@Configuration注解的类的.class)。

1.2 属性

value:用于指定配置类的字节码。

1.3 应用示例

示例:

package com.sunxiaping.spring5.config;

import org.springframework.context.annotation.Configuration;

/**
 * @Configuration 注解标注的类就代表当前类是一个配置类
 */
@Configuration
public class SpringConfiguration {
}

@ComponentScan

2.1 作用

用于指定Spring在初始化容器时要扫描的包。作用和在Spring的xml配置文件中的<context-component-scan base-package="com.sunxiaping"/>是一样的。

2.2 属性

basePackages:用于指定要扫描的包。和该注解中的value属性作用一样。

2.3 应用示例#

示例:

package com.sunxiaping.spring5.config;

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

@Configuration
@ComponentScan("com.sunxiaping.spring5")
public class SpringConfiguration {
}

@Bean

3.1 作用#

该注解只能写在方法上,表明使用此方法创建一个对象,并且放入到Spring容器中。默认情况下,方法名就是Bean的id。

3.2 属性

name:给当前@Bean注解方法创建的对象指定一个名称(即Bean的id)。

3.3 应用示例

示例:

package com.sunxiaping.spring5.config;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;
import java.beans.PropertyVetoException;

@Configuration
@ComponentScan("com.sunxiaping.spring5")
public class SpringConfiguration {

    @Bean
    public DataSource dataSource() {
        try {
            ComboPooledDataSource dataSource = new ComboPooledDataSource();
            dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8&amp;autoReconnect=true&amp;useSSL=false&amp;serverTimezone=GMT%2B8&amp;allowPublicKeyRetrieval=true");
            dataSource.setDriverClass("com.mysql.cj.jdbc.Driver");
            dataSource.setUser("root");
            dataSource.setPassword("123456");
            return dataSource;
        } catch (PropertyVetoException e) {
            throw new RuntimeException(e);
        }
    }
    
    @Bean
    public QueryRunner queryRunner(DataSource dataSource) {
        return new QueryRunner(dataSource);
    }


}

@PropertySource

4.1 作用

用于加载.properties文件中的配置。例如我们配置数据源的时候,可以把连接信息写到properties文件中,就可以使用此注解指定properties配置文件的位置。

4.2 属性

value[]:用于指定properties文件位置。如果是在类路径下,需要写上classpath:

4.3 应用示例

示例:
jdbc.properties

jdbc.driverClass=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8&amp;autoReconnect=true&amp;useSSL=false&amp;serverTimezone=GMT%2B8&amp;allowPublicKeyRetrieval=true
jdbc.user=root
jdbc.password=123456

JdbcConfig.java

package com.sunxiaping.spring5.config;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.PropertySource;

import javax.sql.DataSource;
import java.beans.PropertyVetoException;

@PropertySource("classpath:jdbc.properties")
public class JdbcConfig {

    @Value("${jdbc.driverClass}")
    private String driverClass;
    @Value("${jdbc.url}")
    private String jdbcUrl;
    @Value("${jdbc.user}")
    private String user;
    @Value("${jdbc.password}")
    private String password;

    @Bean
    public DataSource dataSource() {
        try {
            ComboPooledDataSource dataSource = new ComboPooledDataSource();
            dataSource.setJdbcUrl(jdbcUrl);
            dataSource.setDriverClass(driverClass);
            dataSource.setUser(user);
            dataSource.setPassword(password);
            return dataSource;
        } catch (PropertyVetoException e) {
            throw new RuntimeException(e);
        }
    }

    @Bean
    public QueryRunner queryRunner(DataSource dataSource) {
        return new QueryRunner(dataSource);
    }
}

@Import

5.1 作用

导入其他的配置类,在引起其他配置的时候,可以不用再写@Configuration注解。当然,写上也没什么关系。

5.2 属性

value[]:用于指定其他配置类的字节码

5.3 应用示例

示例:
JdbcConfig.java

package com.sunxiaping.spring5.config;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.PropertySource;

import javax.sql.DataSource;
import java.beans.PropertyVetoException;

@PropertySource("classpath:jdbc.properties")
public class JdbcConfig {

    @Value("${jdbc.driverClass}")
    private String driverClass;
    @Value("${jdbc.url}")
    private String jdbcUrl;
    @Value("${jdbc.user}")
    private String user;
    @Value("${jdbc.password}")
    private String password;

    @Bean
    public DataSource dataSource() {
        try {
            ComboPooledDataSource dataSource = new ComboPooledDataSource();
            dataSource.setJdbcUrl(jdbcUrl);
            dataSource.setDriverClass(driverClass);
            dataSource.setUser(user);
            dataSource.setPassword(password);
            return dataSource;
        } catch (PropertyVetoException e) {
            throw new RuntimeException(e);
        }
    }

    @Bean
    public QueryRunner queryRunner(DataSource dataSource) {
        return new QueryRunner(dataSource);
    }
}

SpringConfig.java

package com.sunxiaping.spring5.config;

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

@Configuration
@ComponentScan("com.sunxiaping.spring5")
@Import(JdbcConfig.class)
public class SpringConfiguration {
    

}

通过注解获取容器

示例:

ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfiguration.class);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值