java spring 加载顺序_java – 如何执行spring配置类的加载顺序?

我正在一个多模块项目(maven)上使用

spring-boot.每个模块都有自己的@Configuration类.基本上我确实有如下的布局

模块嵌入式(运行只调用SpringApplication.run())方法:

@Configuration

@EnableAutoConfiguration

@ComponentScan("de.foobar.rootpackage")

@Import({ApplicationConfig.class, RepositoryConfig.class, SecurityConfig.class})

public class FooApplication {

public static void main(String[] args) throws Exception {

SpringApplication.run(FooApplication.class, args);

}

}

模块foo-common(包含所有的bean和spring-data-jpa初始化配置)

@Configuration

@EnableJpaRepositories

@EnableTransactionManagement(entityManagerFactoryRef="entityManagerFactory")

public class RepositoryConfig {

@Bean(destroyMethod = "shutdown")

public DataSource getDataSource() {

// returning a Hikari CP here

}

@Bean(name = "entityManagerFactory") // overriding spring boots default

public EntityManagerFactory getEntityManagerFactory() {

// returning a new LocalEntityManagerFactoryBean here

}

}

模块foo-security(包含spring-securiy配置和相关的域类),它具有对foo-common的maven依赖

@Configuration

@EnableWebSecurity

@EnableGlobalMethodSecurity(prePostEnabled = true)

public class SecurityConfig extends WebSecurityConfigurerAdapter {

// configuring HTTP security and defining my UserDetailsService Bean

}

当我使用FooApplication类启动应用程序时,一切正常工作.上面提到的UserDetailsS​​erviceImpl可以通过@EnableJpaRepositories注释创建的UserRepository自动连线.

由于我想编写一些集成测试,所以我已经在我的一个模块中添加了一个测试clss.

模块foo-media(包含一些域相关的东西加上该模块的测试用例)

@RunWith(SpringJUnit4ClassRunner.class)

@SpringApplicationConfiguration(classes = {RepositoryConfig.class, SecurityConfig.class})

@WebAppConfiguration

@IntegrationTest

public class DirectoryIntegrationTest {

// my test code

}

当我运行测试时,似乎SecurityConfiguration在RepositoryConfig.class之前被加载.由于安全配置定义了必须自动连线的UserServiceImpl,所以测试无法从a开始

NoSuchBeanDefinitionException telling me: No qualifying bean of type [com.foo.rootpackage.security.repository.UserRepository]

我已经尝试在UserDetailsS​​ervice的bean定义中添加@DependsOn(“UserRepository”),告诉我spring不能通过该名称找到一个bean.

任何提示或帮助将不胜感激!提前致谢!

—-编辑(因为被要求提供更多的代码)—-

对于测试,我不使用实际的RepositoryConfig.class,但在公共模块中有一个TestRepositoryConfig.class.看起来像这样

@Configuration

@EnableTransactionManagement

@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactory", basePackages = "de.foobar.rootpackage")

public class TestRepositoryConfig extends RepositoryConfig {

@Bean

@Override

public DataSource getDataSource() {

// returning the ds for testing

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557880.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

@Mapper和@Repository的区别

Mapper和Repository的区别 1.相同点 Mapper和Repository都是作用在dao层接口,使得其生成代理对象bean,交给spring 容器管理 对于mybatis来说,都可以不用写mapper.xml文件 2.不同点 Mapper不需要配置扫描地址,可以单独使用&#x…

java xstream jar_Java库使用----xstream1.3.1

package com.xstream;import java.util.Map;/*** XStream可以自动生成相关的xml配置*/public class XstreamTest{private String moduleName;private Map env;public String getModuleName(){return moduleName;}public void setModuleName(String moduleName){this.moduleName…

在Spring Boot + Mybatis 中,使用@Repository失效

在Spring Boot Mybatis 中,使用Repository失效 在springboot 中,给mapper的接口上加上Repository,无法生成相应的bean,从而无法Autowired,这是因为spring扫描注解时,自动过滤掉了接口和抽象类,这种情况下可…

java中arg函数_main函数必须要带参数(String[] args)吗?

String[] args是main函数的形式参数,可以用来获取命令行用户输入进去的参数。java 本身不存在不带String args[]的main函数,java程序中去掉String args[]会出现错误。建个test类 在cmd中运行时输入java test a b c,并且在你的main函数里面加这段话:Syste…

git本地库(操作具体命令)

在任何盘符下创建本地仓库repository(除git目录下) 在项目目录创建新的本地仓库,并把项目里的所有文件全部添加、提交到本地仓库中去: $ git init #在当前的目录下创建一个新的空的本地仓库 Initialized empty Git repository…

用java做一个小游戏源代码_用java编写的小游戏源代码分析

用java编写的小游戏源代码分析1/5/2008人气:12951import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;public class GreedSnake implements KeyListener{JFrame mainFrame;Canvas paintCanvas;JLabel labelScore;SnakeModel snake…

idea右键项目没有git 【解决方法】

右键项目,没有git选项 解决方法: 进入settings,然后搜索version,按下图点击即可: over,解决:

java注解执行顺序_如何确保java中的注释执行顺序?

您可以使用Order注释确保自定义注释的顺序.例:第一个注释:Retention(RetentionPolicy.RUNTIME)Target(ElementType.METHOD)public interface CustomAnnotation {}AspectComponentOrder(value 1)public class CustomAnnotationInterceptor {Before("…

用java设计秒表_运用Java编写 秒表程序

import java.awt.*;import java.awt.event.*;import javax.swing.*;public class SecondJFrame extends JFrame implements ActionListener,FocusListener{ //响应单击、焦点事件private JTextField text;private JB…

GIT commit问题 No errors and 30 warnings found. Would you like to review them?

GIT commit问题 No errors and 30 warnings found. Would you like to review them?

java spring 条件注解_【Spring】Spring高级话题-条件注解-@Condition

进行本示例的演示,需要先配置好Maven和Spring哦、见:【Spring】基于IntelliJ IDEA搭建Maven分析通过profile,我们可以获得不同的profile,我们可以获得不同的Bean。Spring4提供了一个更通用的基于条件的Bean的创建,即使用Condition…

META-INF目录是干啥用的?

平时写的web项目打包成jar文件之后会发现里面不知道为啥多出了一个叫做META-INF的目录,点开之后发现里面还出现了一个manifest.mf文件。出于好奇我在网上找了找这个目录的用途,结果还是没有找到一个比较通俗的解释,我这种菜鸟对那种比较正规的…

解决springBoot 的templates中html引入css文件失败

我的情况是网页打开没有css效果 文件结构: 解决办法1:修改路径(springBoot已经默认静态资源在static文件夹)只需href“css/你的.css” 解决办法2:增加配置文件 解决办法3:使用 templates语法引入

java并发 cpu高_java高并发核心要点|系列5|CPU内存伪共享

上节提到的:伪共享,今天我们来说说。那什么是伪共享呢?这得从CPU的缓存结构说起。以下如图,CPU一般来说是有三级缓存,1 级,2级,3级,越上面的,越靠近CPU的,速度…

关于request.getRequestDispatcher()的两个方法

一、getRequestDispatcher() getRequestDispatcher()包含两个重要方法,分别是请求转发和请求包含。一个请求跨多个Servlet时,需要使用请求转发和请求包含。 首先需要获得一个RequestDispatcher 对象:RequestDispatcher rd request.getReque…

mysql 行级锁 索引_mysql 行级锁 索引唯一值

做项目时由于业务逻辑的需要,必须对数据表的一行或多行加入行锁,举个最简单的例子,图书借阅系统。假设 id1 的这本书库存为 1 ,但是有 2 个人同时来借这本书,此处的逻辑为Select restnum from book where id 1 ;-- 如果…

springboot拦截了静态资源css,js,jpg,png等

SpringBoot中自己写的拦截器,居然把静态资源也拦截了,导致了页面加载失败 /****/ Configuration public class SpringMvcWebConfigSupport implements WebMvcConfigurer {/*** 默认访问的是首页** param registry*/Overridepublic void addViewControlle…

java simplejson_JSON.simple首页、文档和下载 - JSON/BSON开发包 - OSCHINA - 中文开源技术交流社区...

JSON.simple是一个简单的Java类库,用于解析和生成JSON文本。不依赖于其它类库,性能高。示例代码:System.out.println("decode");String s"[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\&quo…

POST请求转换为其他请求失效 input type=“hidden“ name=“_method“ value=“put“无效

在使用Springboot进行RESTFUL风格开发时需要将表单数据以其他请求提交。 直接在表单中添加 <input type"hidden" name"_method" value"put"/>再次提交时&#xff0c;依然是使用 POST 方法。 原因是在 Spring Boot 的 META-INF/spring-con…

java 多态实现的jvm调用过程_多态:JVM是如何进行方法调用的

在我们平时的工作学习中写java代码时&#xff0c;如果我们在同一个类中定义了两个方法名和参数类型都相同的方法时&#xff0c;编译器会直接报错给我们。还有在代码运行的时候&#xff0c;如果子类定义了一个与父类完全相同的方法的时候&#xff0c;父类的方法就会被覆盖&#…