Questions tagged «spring»

Spring框架是用于Java平台上的应用程序开发的开源框架。它的核心是对基于组件的体系结构的丰富支持,目前它具有二十多个高度集成的模块。


5
自动装配实现相同接口的两个bean-如何将默认bean设置为自动装配?
背景: 我有一个Spring 2.5 / Java / Tomcat应用程序。下面的bean在整个应用程序中的许多地方都使用过 public class HibernateDeviceDao implements DeviceDao 以下是新的bean: public class JdbcDeviceDao implements DeviceDao 第一个bean的配置如下(包含了软件包中的所有bean) <context:component-scan base-package="com.initech.service.dao.hibernate" /> 第二个(新)bean是单独配置的 <bean id="jdbcDeviceDao" class="com.initech.service.dao.jdbc.JdbcDeviceDao"> <property name="dataSource" ref="jdbcDataSource"> </bean> 启动服务器时,这(当然)会导致异常: 嵌套的异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有定义[com.sevenp.mobile.samplemgmt.service.dao.DeviceDao]类型的唯一bean:期望的单个匹配bean,但发现2:[deviceDao,jdbcDeviceDao] 从试图像这样自动装配bean的类中 @Autowired private DeviceDao hibernateDevicDao; 因为有两个bean实现相同的接口。 问题: 是否可以配置bean,以便 1.我不必对现有的类进行更改,因为这些类已经HibernateDeviceDao自动接线 2.仍然可以像这样使用第二个(新)bean: @Autowired @Qualifier("jdbcDeviceDao") 也就是说,我需要一种将HibernateDeviceDaobean 配置为自动装配的默认bean的方法,同时允许在JdbcDeviceDao带有@Qualifier注释的显式指定中同时使用the 。 我已经尝试过的: 我尝试设置属性 autowire-candidate="false" …


11
Spring MVC-如何在Rest Controller中将简单字符串作为JSON返回
我的问题实质上是对该问题的后续行动。 @RestController public class TestController { @RequestMapping("/getString") public String getString() { return "Hello World"; } } 在上面,Spring会将“ Hello World”添加到响应正文中。如何返回String作为JSON响应?我知道我可以添加引号,但这感觉更像是黑客。 请提供任何示例以帮助解释此概念。 注意:我不希望直接将其写到HTTP响应正文中,我想以JSON格式返回字符串(我将控制器与RestyGWT一起使用,这要求响应必须为有效JSON格式)。
137 java  json  spring  rest  spring-mvc 

15
使用Spring以编程方式访问属性文件?
我们使用下面的代码从属性文件中注入具有属性的Spring bean。 <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations" value="classpath:/my.properties"/> </bean> <bean id="blah" class="abc"> <property name="path" value="${the.path}"/> </bean> 有没有一种方法可以通过编程方式访问属性?我试图做一些没有依赖注入的代码。所以我只想要一些这样的代码: PropertyPlaceholderConfigurer props = new PropertyPlaceholderConfigurer(); props.load("classpath:/my.properties"); props.get("path");
137 spring  properties 

17
Spring Boot-不是托管类型
我使用Spring boot + JPA,启动服务时遇到问题。 Caused by: java.lang.IllegalArgumentException: Not an managed type: class com.nervytech.dialer.domain.PhoneSettings at org.hibernate.jpa.internal.metamodel.MetamodelImpl.managedType(MetamodelImpl.java:219) at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.<init>(JpaMetamodelEntityInformation.java:68) at org.springframework.data.jpa.repository.support.JpaEntityInformationSupport.getMetadata(JpaEntityInformationSupport.java:65) at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getEntityInformation(JpaRepositoryFactory.java:145) at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:89) at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:69) at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:177) at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:239) at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:225) at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:92) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1625) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1562) 这是Application.java文件, @Configuration @ComponentScan @EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class }) @SpringBootApplication public class DialerApplication { …

3
Spring Security筛选器链如何工作
我意识到Spring安全性是建立在过滤器链上的,该过滤器将拦截请求,检测(不存在)身份验证,重定向到身份验证入口点或将请求传递给授权服务,并最终让请求到达servlet或引发安全异常(未经身份验证或未经授权)。DelegatingFitlerProxy将这些过滤器粘合在一起。为了执行任务,这些筛选器访问服务,例如UserDetailsS​​ervice和AuthenticationManager。 链中的关键过滤器为(按顺序) SecurityContextPersistenceFilter(从JSESSIONID恢复身份验证) UsernamePasswordAuthenticationFilter(执行身份验证) ExceptionTranslationFilter(从FilterSecurityInterceptor捕获安全异常) FilterSecurityInterceptor(可能会抛出身份验证和授权异常) 我对如何使用这些过滤器感到困惑。是否是在春季提供的表单登录中,UsernamePasswordAuthenticationFilter仅用于/ login,而后面的过滤器未使用?表单登录名称空间元素是否自动配置这些过滤器?是否每个请求(无论是否经过身份验证)都到达非登录URL的FilterSecurityInterceptor? 如果我想使用从登录名检索到的JWT-token保护我的REST API ,该怎么办?我必须配置两个名称空间配置http标签,对吗?一个用于/ login,使用UsernamePasswordAuthenticationFilter,另一个用于REST URL,带有自定义JwtAuthenticationFilter。 配置两个http元素会创建两个元素springSecurityFitlerChains吗?是UsernamePasswordAuthenticationFilter默认是关闭的,直到我宣布form-login?如何SecurityContextPersistenceFilter用Authentication将从现有JWT-token而不是从中获取的过滤器替换JSESSIONID?

15
Spring-没有EntityManager可以用于当前线程的实际事务处理-无法可靠地处理“持久”调用
当尝试调用“ persist”方法将实体模型保存到Spring MVC Web应用程序中的数据库时,出现此错误。在Internet上找不到与该特定错误相关的任何帖子或页面。似乎似乎EntityManagerFactory bean出了点问题,但是我对Spring编程还是比较陌生,所以对我来说,似乎一切都已初始化好,并且根据Web上的各种教程文章。 dispatcher-servlet.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xsi:schemaLocation=" http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd http://www.springframework.org/schema/data/repository http://www.springframework.org/schema/data/repository/spring-repository-1.5.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd"> <context:component-scan base-package="wymysl.Controllers" /> <jpa:repositories base-package="wymysl.repositories"/> <context:component-scan base-package="wymysl.beans" /> <context:component-scan base-package="wymysl.Validators" /> <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> <bean class="org.springframework.orm.hibernate4.HibernateExceptionTranslator"/> <bean id="passwordValidator" class="wymysl.Validators.PasswordValidator"></bean> <bean …

7
Spring Java Config:如何创建带有运行时参数的原型作用域@Bean?
使用Spring的Java Config,我需要使用只能在运行时获得的构造函数参数来获取/实例化作用域原型的bean。考虑以下代码示例(为简便起见,对其进行了简化): @Autowired private ApplicationContext appCtx; public void onRequest(Request request) { //request is already validated String name = request.getParameter("name"); Thing thing = appCtx.getBean(Thing.class, name); //System.out.println(thing.getName()); //prints name } Thing类的定义如下: public class Thing { private final String name; @Autowired private SomeComponent someComponent; @Autowired private AnotherComponent anotherComponent; public Thing(String name) { this.name …

12
@Scope(“ prototype”)bean范围未创建新bean
我想在控制器中使用带注释的原型bean。但是春天正在创建一个单例豆。这是该代码: @Component @Scope("prototype") public class LoginAction { private int counter; public LoginAction(){ System.out.println(" counter is:" + counter); } public String getStr() { return " counter is:"+(++counter); } } 控制器代码: @Controller public class HomeController { @Autowired private LoginAction loginAction; @RequestMapping(value="/view", method=RequestMethod.GET) public ModelAndView display(HttpServletRequest req){ ModelAndView mav = new ModelAndView("home"); mav.addObject("loginAction", …
133 spring  spring-mvc 

10
如何从属性文件读取值?
我正在用弹簧。我需要从属性文件中读取值。这是内部属性文件,而不是外部属性文件。属性文件可以如下。 some.properties ---file name. values are below. abc = abc def = dsd ghi = weds jil = sdd 我需要以传统方式从属性文件中读取这些值。如何实现呢?Spring 3.0是否有任何最新方法?


10
Java Spring Boot:如何将我的应用程序根目录(“ /”)映射到index.html?
我是Java和Spring的新手。如何将我的应用程序根目录映射http://localhost:8080/到静态目录index.html?如果我导航到http://localhost:8080/index.html它的作品很好。 我的应用程序结构为: 我的config\WebConfig.java样子是这样的: @Configuration @EnableWebMvc @ComponentScan public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**").addResourceLocations("/"); } } 我尝试添加,registry.addResourceHandler("/").addResourceLocations("/index.html");但是失败。
133 java  spring  spring-boot 

12
从IntelliJ运行时如何激活Spring Boot配置文件?
我有5个环境: - local (my development machine) - dev - qc - uat - live - staging 我希望每个环境使用不同的应用程序属性,因此我有以下属性文件,每个属性文件的数据源都有不同的URL: - application.properties (containing common properties) - application-local.properties - application-dev.properties - application-qc.properties - application-uat.properties - application-live.properties 我正在使用IntelliJ,并在本地计算机上的Gradle插件中使用bootRun运行我的应用程序。我将用于在运行Tomcat的所有其他环境上部署相同的应用程序war文件。 我尝试添加: --spring.profiles.active =本地 脚本参数下的运行配置。 我尝试添加 -Dspring.profiles.active =本地 到VM选项下的运行配置。 都不起作用。我一直在启动时看到INFO消息,说:未设置活动配置文件,回退到默认配置文件:默认 如果我使用以下命令从Windows命令行运行我的应用程序 gradle bootRun 但是我首先设置环境变量 set SPRING_PROFILES_ACTIVE=local 然后一切正常。 所以我的问题是,从IntelliJ运行bootRun时如何激活本地spring引导配置文件?

8
@Service批注应保存在哪里?接口还是实现?
我正在使用Spring开发应用程序。我需要使用@Service注释。我ServiceI和ServiceImpl这样ServiceImpl implements ServiceI。我对应该在哪里保留@Service注释感到困惑。 我应该用注释接口或实现@Service吗?这两种方法有什么区别?
133 spring  service 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.