Spring的纯注解配置

超详细总结Spring的配置注解 配置注解,指@,@,@Scope,@Lazy,@,@Import等注解,本篇文章将对这些注解的使用进行详细总结。Springboot2.4.1Spring5.3.2Spring的配置注解,更多的是为如何向容器注册bean服务,那么这里给出容器注册bean的总结。配置类中使用@Bean注解向容器注册bean;使用@注解扫描指定包路径下的类并注册,默认扫描@Controller,@Service,@Component和@Repository注解修饰的类;使用@Import注解,有如下三种方式。 阅读详情

一、Spring注解

   我们发现,之所以我们现在离不开xml配置文件,是因为我们有一处很关键的配置,如果他要也能用注解配置,那么我们就可以脱离xml文件了:

1.1、@PropertySource(" ")

作用:

   加载*properties,等价于<context:property-placeholder location=" ">

属性:

  value:指定*.properties文件的位置

1.2、@Bean

作用:

   创建对象并交给Spring的ioc容器里,等价于<bean />

属性:

   value:指定IOC容器的key,等价于<bean id=" "/>

1.3、@ComponentScan

作用:

   指定spring要扫描的包,等价于<context:component-scan/>

属性:

   value:指定扫描的包

1.4、@Configuration

作用:

    标识当前类是一个配置类,配置类等价于applicationContext.xml

1.5、@Import

作用:

    导入配置类,等价于<import resource=""/>

属性:

    value:配置类的字节码

二、Spring纯注解配置

2.1、JdbcConfig

package com.by.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.PropertySource;

import javax.sql.DataSource;
//用于加载*.properties文件中的配置。作用和在spring的xml配置文件中的:`<context:property-placeholder location="">`是一样的。
@PropertySource("classpath:db.properties")
public class JdbcConfig {

    @Value("${jdbc.driver}")
    private String driver;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private  String password;

   @Bean("datasource")
    // <!--配置数据源-->
   public DataSource getDatasource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driver);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
}

2.2、MyBatisConfig

package com.by.config;

import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;

import javax.sql.DataSource;

public class MyBatisConfig {

    @Bean//Value不赋值 使用方法名作为IOC容器的key
    public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
             sqlSessionFactoryBean.setDataSource(dataSource);
             return sqlSessionFactoryBean;
    }
//<!--配置MyBatis下扫描的包-->
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
        mapperScannerConfigurer.setBasePackage("com.by.mapper");
        mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean");
        return mapperScannerConfigurer;
    }
}

2.3、ServiceConfig

package com.by.config;

import org.springframework.context.annotation.ComponentScan;
//<!--扫描service下的类 使其注入spring IOC容器中-->
@ComponentScan("com.by.service")
public class ServiceConfig {
}

2.4、TxConfig

事务配置类

package com.by.config;

import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import javax.sql.DataSource;

@EnableTransactionManagement
public class TxConfig {
    @Bean
    public DataSourceTransactionManager dataSourceTransactionManager(DataSource dataSource){    //<!--配置事务管理器-->
        DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
           dataSourceTransactionManager.setDataSource(dataSource);
           return dataSourceTransactionManager;
    }
}

2.5、SpringConfig

package com.by.config;

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

@Configuration//相当于applicationContext.xml
//@Import注解是用来导入配置类或者一些需要前置加载的类。作用和在spring的xml配置文件中的:`<import resource=""></import>`是一样.
@Import({JdbcConfig.class, MyBatisConfig.class, ServiceConfig.class, TxConfig.class})//相当于<import resource="">
public class SpringConfig {

}

2.6、SpringMVCConfig

package com.by.config;

import com.by.converter.DateConverter;
import com.by.interceptor.LoginInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.format.FormatterRegistry;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
@ComponentScan("com.by.controller")
@EnableWebMvc// 等同<mvc:annotation-driven></mvc:annotation-driven>
public class SpringMVCConfig implements WebMvcConfigurer {
  // <!--配置视图解析器-->
    @Bean
    public InternalResourceViewResolver internalResourceViewResolver(){
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/pages/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }
//<!--配置上传解析器-->
    @Bean
    public CommonsMultipartResolver commonsMultipartResolver(){
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
         //配置最大byte
        multipartResolver.setMaxUploadSize(5242880);
         //编码格式
        multipartResolver.setDefaultEncoding("UTF-8");
        return multipartResolver;
    }

//配置转换器
    @Override
    public void addFormatters(FormatterRegistry registry) {
         //要添加的日期转换器
        registry.addConverter(new DateConverter());
    }

//配置拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
         //addPathPatterns要拦截的路径 excludePathPatterns允许的路径
        registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/user/**");
    }
//<!--配置静态资源访问路径和位置-->
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/head/**").addResourceLocations("/head/");
    }
    
}

2.7、WebConfig

package com.by.config;

import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

import javax.servlet.Filter;

public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer {

//加载applicationContext.xml
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};
    }
//加载springmvc.xml
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMVCConfig.class};
    }
//加载dispatchServlet匹配的url
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
//过滤器设置编码格式
    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter filter = new CharacterEncodingFilter();
        filter.setEncoding("UTF-8");
        return new Filter[]{filter};
    }
}

RP Fiber Power 版本 RP Fiber Power的版本历史 该软件一直受到多年来广泛的发展计划,这大大扩展了其功能,以及用户界面的质量。 V1 这是第1个版本。 它仅限于光纤激光器和放大器的连续波计算,并且只能通过脚本进行控制。 V2 版本2引入了交互式表单。 至少对于更简单的模拟,现在可以简单地通过填写表单来工作,而V1必须通过脚本来控制。 例如,屏幕截图显示了输入某些信号参数的表单: 当您基于这些表单执行计算时,程序将根据您的表单输入自动编写脚本文件,然后执行该脚本。如果您需要编写脚本以获得更大的灵活性,可以稍后查看该脚 阅读详情

相关推荐

STM32H743 ADC多通道采样实战:CubeMX配置+DMA传输避坑指南

本文详细介绍了STM32H743 ADC多通道采样的实战配置,包括CubeMX参数设置、DMA传输优化及常见问题解决方案。重点解析了ADC模块的核心特性、多通道采样序列配置、Cache一致性处理等关键技术,帮助开发者高效实现稳定可靠的模拟信号采集系统。

weixin_29175469的博客 612

Spring(十三)- Spring 配置类的注解

Spring(十三)- Spring 配置类的注解

及时当勉励,岁月不待人 2239

GO与KEGG富集分析实战:从差异基因到功能注释

本文详细介绍了GO与KEGG富集分析的完整实战流程,从差异基因列表出发,通过基因ID转换、核心分析到结果可视化,系统阐述了如何将基因数据转化为生物学洞察。文章重点讲解了使用R语言clusterProfiler包进行GO和KEGG富集分析的具体步骤、参数设置及常见问题解决方案,并强调了结果解读与生物学故事构建的方法,帮助研究者深入理解差异基因的集体功能倾向。

weixin_29291863的博客 919

Spring注解驱动开发第19讲——使用@PropertySource加载配置文件,我只看这一篇!!

简单介绍一下@PropertySource和@PropertySources这俩注解 @PropertySource注解概述 @PropertySource注解是Spring 3.1开始引入的配置类注解。通过@PropertySource注解可以将properties配置文件中的key/value存储到Spring的Environment中,Environment接口提供了方法去读取配置文件中的值,参数是properties配置文件中定义的key值。当然了,也可以使用@Value注解用${}占位符为bean

李阿昀的博客 5098

BLDC方波控制双闭环Simulink仿真模型

无刷直流电机方波控制双闭环Simulink仿真模型搭建详细教程,包括速度PI环、电流PI环、换向逻辑和受控电压源,仿真结果良好。

m0_57458432的博客 6871

【鸿蒙实战开发】HarmonyOS申请调试签名证书过程

这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。

HarmonyOS_002的博客 3561

整合Spring(二)——注解方式加载配置文件

整合spring加载配置文件

Aspirin's Nest 876

Exchange Server 2013 运维系列——邮箱配额设置(管理中心)

邮箱配额需要设置三个参数: 1、发出警告限制:表示在向用户发出警告之前的最大存储限制。如果邮箱大小达到或超过指定值,Exchange 将向邮箱用户发送警告消息。 2、禁止发送限制:表示邮箱的“禁止发送”限制。如果邮箱大小达到或超过指定的限制,Exchange 将阻止邮箱用户发送新邮件,并显示一条描述性错误消息。 3、禁止发送和接收限制:表示此邮箱的“禁止发送和接收”限制。如果邮箱大小

白昼的技术专栏 1万+

spring 的纯注解配置

spring 的纯注解配置 1 @Configuration 作用: 用于指定当前类是一个 spring 配置类,当创建容器时会从该类上加载注解。获取容器时需要使用AnnotationApplicationContext(有@Configuration 注解的类.class)。 属性: value:用于指定配置类的字节码 细节: 当配置类作为Annot...

zxkzhang的博客 453

PCL 法向量夹角剔除错误匹配点对【2026最新版】

实现了一种简单的基于对应点法线角度的对应关系去除方法。博客长期更新,本文最新更新时间为:2026年5月24日。

点云侠的博客 41万+

辐射制冷无规散射结构非球形散射体的结构优化与设计准则

本文针对辐射制冷材料中非球形散射体的光散射特性开展研究,提出了一种基于体积散射截面和不对称因子的综合评价方法。通过建立简化模型分析球体、圆柱体、长方体等六种几何形状在太阳波段的散射性能,发现金字塔形和圆锥形具有更强的后向散射能力。研究创新性地提出"反射因子SR=S(1-g)"这一评价参数,该参数与宏观反射率高度相关,为非球形散射体的优化设计提供了定量依据。仿真结果表明,合理选择散射体形状可显著提升辐射制冷材料的太阳反射率,为实现高效被动制冷提供了新的结构设计思路。

huanghm88的专栏 79

SpringBoot Spring 纯注解配置

该注解只能写在方法上,表明使用此方法创建一个对象,并且放入spring容器。@Import注解是用来导入配置类或者一些需要前置加载的类。value[]:用于指定properties文件位置。用于指定spring在初始化容器时要扫描的包。用于加载*.properties文件中的配置。basePackages:用于指定要扫描的包。和该注解中的value属性作用一样。name:给当前@Bean注解方法创建的对象指定一个名称(即bean的id)。value[]:用于指定其他配置类的字节码。

jyx_boy的博客 503

PCL K4PCS算法实现点云粗配准【2026最新版】

K4PCS算法实现点云粗配准。博客长期更新,本文最近一次更新时间为:2026年5月4日。

点云侠的博客 42万+

Spring之纯注解配置(五)

Spring之纯注解配置Spring纯注解配置的作用一、@Configuration二、@ComponentScan三、@Bean四、@PropertySource五、@Import Spring纯注解配置的作用 完全脱离spring.xml配置文件,基于注解实现spring.xml配置的相同功能 一、@Configuration 作用: 指定当前类是一个配置类,创建容器时会从该类上加载注解。 注意: 1.获取容器时需要使用AnnotationApplicationContext(有@Configur

积跬步,至千里。 618

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Spring 的纯注解配置

可copy之前的springmvc项目。

weixin_72945723的博客 753

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

springmvc纯注解配置,springmvc整合spring纯注解配置

springmvc纯注解配置 必须实现WebApplicationInitializer 接口,tomcat启动时,会调用onstart() public class MyWebApplicationInitializer implements WebApplicationInitializer { /* * tomcat在初始化容器的时候回调用该方法 * @param servletContext * @throws ServletException */

南顾春衫 468

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Spring Boot 入门之Spring的纯注解配置

我们发现,之所以我们现在离不开xml配置文件,是因为我们有一处很关键的配置,如果他要也能用注解配置,那么我们就可以脱离xml文件了。@Import注解是用来导入配置类或者一些需要前置加载的类。用于指定spring在初始化容器时要扫描的包。用于加载*.properties文件中的配置。basePackages:用于指定要扫描的包。和该注解中的value属性作用一样。name:给当前@Bean注解方法创建的对象指定一个名称(即bean的id)。value[]:用于指定其他配置类的字节码。

qq_57570052的博客 1333

六、Spring基于纯注解的开发和基于注解加xml配置你怎么选

其实在没有熟悉spring的一些人身上总会觉得spring用纯注解的话会很简单,这也是我最开始的想法,现在我们用下面的代码来看看到底是怎么样的! 我们首先把依赖导入 <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactI

学习笔记 662

spring 纯java配置_第十七章:Spring 纯注解配置

一、前言不知道各位有没有用过 SpringBoot,凡是用过 SpringBoot 的开发者,都会深深的爱上它,最大的原因就是它可以做到无 XML 配置,所有配置均可使用 Java 代码和注解完成,这样会省去很多麻烦,前面写了这么多 Spring 的文章,对于我这种天天用 SpringBoot 的开发者而言写 XML 配置简直是一种煎熬,那么我们使用 Spring 能不能不写这个 applicat...

weixin_42299205的博客 205

Spring框架使用纯注解的方式来配置IOC

使用纯注解的方式来配置IOC 只需要将applicationContext.xml配置文件文件替换成一个配置类即可。   1.  创建一个配置类来替换xml配置文件。 使用@Configuration注解来指定Spring配置类。当创建容器时会从该类上加载注解。 使用@ComponenScan注解来指定初始化容器时要扫描的包。 属性:     basePackages:用于指定要扫描

Aaron_80726的博客 1137
上一篇: Spring MVC整合ssm
下一篇: Spring Boot入门
Bbbcccccc
博客等级 码龄4年 158粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值