【SpringIOC】Spring配置类代替bean.xml
概述
创建一个配置类,它的作用和bean.xml是一样的
spring中的新注解
@Configuration
作用:指定当前类是一个配置类
细节:当配置类作为AnnotationConfigApplicationContext对象创建的参数时(即用xxx.class作为参数且没有其他配置类需要扫描),该注解可以不写
ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfiguration.class);
@ComponentScan
作用:用于通过注解指定spring在创建容器时要扫描的包
属性:
value:它和basePackages的作用是一样的,都是用于指定创建容器时要扫描的包。
使用此注解就等同于在xml配置了:<context:component-scan base-package="com.czy"></context:component-scan>
@Bean
作用:用于把当前方法的返回值作为bean对象存入spring的ioc容器中
属性:
name:用于指定bean的id。默认值:当前方法的名称
细节:当我们使用注解配置方法时,如果方法有参数,spring框架回去容器中查找有没有可用的bean对象,查找方式和Autowried的方式是一样的(可添加Qualifier指定对象)
@Qualifier
用于指定特定的对象。
@Import
作用:导入其他配置类
属性:
value:指定配置类的字节码。
当我们使用Import注解之后,有Import注解的类就是父配置类,而导入的就是子配置类
@PropertySource
作用:用于指定properties文件的位置(写在配置类上)
属性:
value:指定文件的名称和路径
关键字:classpath,表示类路径(resource文件)下
@PropertySource("classpath:druid.properties")
/**
* 该类是一个配置类,他的作用与bean.xml相同
*/
@ComponentScan("com.czy")
@Import(JdbcConfig.class)
public class SpringConfiguration {
}
package config;
import com.czy.factory.DruidFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Scope;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
public class JdbcConfig {
/**
* 创建数据源对象
* @param druidFactory
* @return
*/
@Bean("druid")
public DataSource getDataSource(DruidFactory druidFactory){
return druidFactory.getDataSource();
}
/**
* 用于创建一个JdbcTemplate对象
* 不能是单例对象,不然多个线程使用单个template会出现进程问题
* @param dataSource
* @return
*/
@Bean(name = "template")
@Scope("prototype")
public JdbcTemplate createJdbcTemplate(DataSource dataSource){
return new JdbcTemplate(dataSource);
}
}
案例
原配置文件
配置类代替配置文件
package config;
import com.czy.factory.DruidFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
/**
* 该类是一个配置类,他的作用与bean.xml相同
*/
@Configuration
@ComponentScan("com.czy")
public class SpringConfiguration {
/**
* 创建数据源对象
* @param druidFactory
* @return
*/
@Bean("druid")
public DataSource getDataSource(DruidFactory druidFactory){
return druidFactory.getDataSource();
}
/**
* 用于创建一个JdbcTemplate对象
* 不能是单例对象,不然多个线程使用单个template会出现进程问题
* @param dataSource
* @return
*/
@Bean(name = "template")
@Scope("prototype")
public JdbcTemplate createJdbcTemplate(DataSource dataSource){
return new JdbcTemplate(dataSource);
}
}
分类:
Spring
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!