javascript

java

python

c#

android

node.js

c++

reactjs

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

java-PageRequest構造函數已被棄用

我正在使用Spring Data Commons v2 +快照,并且發現PageRequest的構造函數已被棄用。 這似乎發生在M1和M2之間。 不幸的是可以领救济金的游戏,這是Pageable接口的唯一[實際]實現。 我想知道努力的方向,對于當前的開發有什么更好的選擇。

trans by 2020-02-29T15:46:45Z

java-如何使用@ResponseBody從Spring Controller返回JSON數據

春季版本4.2.0,休眠4.1.4這是我的ArrayList函數:

@RequestMapping(value = "/mobile/getcomp", method = RequestMethod.GET)
@ResponseBody
public List<Company>  listforCompanies() {      
    List<Company> listOfCompanies= new ArrayList<Company>();        
    listOfCompanies = companyManager.getAllCompanies();
    return listOfCompanies;
}

ArrayList中的Jackson映射器依賴關系:

    <!-- Jackson JSON Mapper -->
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>${jackson.version}</version>
    </dependency>

在我的ArrayList中獲取列表,但返回時顯示以下錯誤:

SEVERE: Servlet.service() for servlet [dispatcherServlet] in context with path [/IrApp] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList] with root cause
    java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList
        at org.springframework.util.Assert.isTrue(Assert.java:68)
        at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:124)

鏈接到我正在關注的示例。

trans by 2020-02-29T10:24:28Z

查看Spring啟動的嵌入式H2數據庫的內容

由于以下配置,我想在Web瀏覽器中查看Spring啟動的H2數據庫的內容:

<jdbc:embedded-database id="dataSource" type="H2" />
<jdbc:initialize-database data-source="dataSource">
    <jdbc:script location="classpath:db/populateDB.sql"/>
</jdbc:initialize-database>

我在日志中搜索了JDBC URL:

DEBUG o.s.j.d.SimpleDriverDataSource - Creating new JDBC Driver Connection to [jdbc:h2:mem:dataSource;DB_CLOSE_DELAY=-1]

這樣我就可以如下填寫連接表格:

enter image description here

但是不幸的是,數據庫仍然是空的,但是由于populateDB.sql腳本,它不應該是空的。

任何想法?

謝謝!

trans by 2020-02-29T09:19:39Z

春天:@ModelAttribute VS @RequestBody

如果我錯了,請糾正我。兩者都可以用于數據綁定。

問題是何時使用@ModelAttribute?

@RequestMapping(value="/owners/{ownerId}/pets/{petId}/edit", method = RequestMethod.POST)
public String processSubmit(@ModelAttribute Pet pet) { }

另外,什么時候使用@RequestBody?

@RequestMapping(value = "/user/savecontact", method = RequestMethod.POST
public String saveContact(@RequestBody Contact contact){ }

根據我的理解,兩者都有相似的目的。

謝謝!!

trans by 2020-02-22T04:27:41Z

Java-Spring Web MVC-驗證單個請求參數

我在Spring Web MVC 3.0中運行一個webapp,我有許多控制器方法,其簽名大致如下:

@RequestMapping(value = "/{level1}/{level2}/foo", method = RequestMethod.POST)
public ModelAndView createFoo(@PathVariable long level1,
        @PathVariable long level2,
        @RequestParam("foo_name") String fooname,
        @RequestParam(value = "description", required = false) String description);

我想添加一些驗證-例如,@RequestBody應該限制為一定的長度,或者fooname應該僅包含某些字符。 如果驗證失敗,我想向用戶返回一條消息,而不是拋出一些未經檢查的異常(如果我讓數據滲透到DAO層,無論如何都會發生這種情況)。 我知道JSR303,但尚未使用它,也不太了解如何在Spring上下文中應用它。

據我了解,另一種選擇是將@RequestBody綁定到整個域對象并在其中添加驗證約束,但是目前我的代碼已設置為接受如上所示的各個參數。

使用這種方法將驗證應用于輸入參數的最直接方法是什么?

trans by 2020-02-22T02:00:29Z

java-與MySql的連接會自動中止。 如何正確配置Connector / J?

我從錯誤消息中讀取了以下建議:

您應該考慮兩者都到期   和/或測試連接有效性   在您的應用程序中使用之前,   增加配置的服務器   客戶端超時值,或使用   連接器/ J連接屬性   'autoReconnect = true'避免這種情況   問題。

我正在使用Spring和JPA。 我應該在哪里配置Connector / J? (在persistence.xmlentityManagerFactory彈簧配置,在dateSource彈簧配置或其他位置?)

trans by 2020-02-22T01:26:40Z

java-春季交易需要vs需求新:回滾交易

我有一個具有REQUIRED事務屬性的方法:

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void createUser(final UserBean userBean) {
          
trans by 2020-02-20T01:31:33Z

使用Spring MVC Tes測試Spring MVC @ExceptionHandler方法

我有以下簡單的控制器來捕獲任何意外的異常:

@ControllerAdvice
public class ExceptionController {
    @ExceptionHandler(Throwable.class)
    @ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
    @ResponseBody
    public ResponseEntity handleException(Throwable ex) {
        return ResponseEntityFactory.internalServerErrorResponse("Unexpected error has occurred.", ex);
    }
}

我正在嘗試使用Spring MVC Test框架編寫集成測試。 這是我到目前為止所擁有的:

@RunWith(MockitoJUnitRunner.class)
public class ExceptionControllerTest {
    private MockMvc mockMvc;
    @Mock
    private StatusController statusController;
    @Before
    public void setup() {
        this.mockMvc = MockMvcBuilders.standaloneSetup(new ExceptionController(), statusController).build();
    }
    @Test
    public void checkUnexpectedExceptionsAreCaughtAndStatusCode500IsReturnedInResponse() throws Exception {
        when(statusController.checkHealth()).thenThrow(new RuntimeException("Unexpected Exception"));
        mockMvc.perform(get("/api/status"))
                .andDo(print())
                .andExpect(status().isInternalServerError())
                .andExpect(jsonPath("$.error").value("Unexpected Exception"));
    }
}

我在Spring MVC基礎結構中注冊了ExceptionController和一個模擬StatusController。在測試方法中,我設置了從StatusController引發異常的期望。

引發了異常,但是ExceptionController沒有處理該異常。

我希望能夠測試ExceptionController獲取異常并返回適當的響應。

關于為什么這不起作用以及如何進行這種測試的任何想法?

謝謝。

trans by 2020-02-18T17:16:43Z

java-如何在Spring中加載資源并將其內容用作字符串

如何加載Spring資源內容并將其用于設置bean屬性或將其作為參數構造函數傳遞?

該資源包含自由文本。

trans by 2020-02-16T13:04:37Z

java-Spring REST有多個@RequestBody參數,可能嗎?

我已經實現了Spring RESTful Web服務。 使用Jackson JSON進行對象映射。 我有一個接受兩個參數的方法。

public Person createPerson(
    @RequestBody UserContext userContext,
    @RequestBody Person person)

客戶端將如何構造一個請求,以便在正文中傳遞多個JSON對象?

這可能嗎?

-斯里

trans by 2020-02-16T08:07:52Z

java-在春季測試@Scheduled

Spring提供了使用注釋在特定時間間隔安排和執行任務的可能性,例如 SpringJUnit4ClassRunner

有一種方便的方法來對該行為進行單元測試嗎?

當然,我可以自己調用bean的方法,但是我要確保不會因配置錯誤等而遇到諸如多次執行之類的問題。

其他框架提供了自己快進時間的可能性。 Activiti就是一個例子,您可以在其中致電

org.activiti.engine.impl.util.ClockUtil.setCurrentTime(date)

加快框架使用的時間。

春天有什么可比的嗎?

從本質上講,我想做的是在單元測試(使用SpringJUnit4ClassRunner運行)中進行如下操作

@Test public void testTaskScheduling() {
  assertThat(someOtherBean.getSomeProperty(), is(equalTo(whatIinitiallyExpect)));
  SpringClockUtil.setDate(dateInTwoHours)// This is what I am missing
  SpringTaskExecutor.executeAllScheduledTasks()           
          
trans by 2020-02-16T07:48:08Z

java-如何手動強制@Transactional方法中的提交?

這個問題已經在這里有了答案:

  • 如何將數據刷新到活動的Spring事務中的db                                     4個答案

我正在使用Spring / Spring-data-JPA,發現自己需要在單元測試中手動強制提交。 我的用例是我正在做一個多線程測試,其中我必須使用在生成線程之前保留的數據。

不幸的是,鑒于測試是在commit()事務中運行的,因此即使flush也無法使其對生成的線程進行訪問。

   @Transactional   
   public void testAddAttachment() throws Exception{
        final Contract c1 = contractDOD.getNewTransientContract(15);
        contractRepository.save(c1);
          
trans by 2020-02-15T04:54:35Z

在Spring中@Order注釋有什么用?

我看過使用@Order批注的代碼。 我想知道相對于Spring Security或Spring MVC,此注釋的用途是什么。

這是一個例子:

@Order(1)
public class StatelessAuthenticationSecurityConfig extends WebSecurityConfigurerAdapter {
    @Autowired
    private UserDetailsService userDetailsService;
    @Autowired
    private TokenAuthenticationService tokenAuthenticationService;
}

如果不使用此注釋,上述類的順序會怎樣?

trans by 2020-02-15T04:22:58Z

java-Spring AOP無法在另一個方法中進行方法調用

ABC.java中定義了兩種方法

public void method1(){
   .........
   method2();
  ...........
}
public void method2(){
  ...............
  ...............  
}

我想對method2進行調用AOP。我創建了一個類AOPLogger.java,它具有checkAccess方法中提供的方面功能。
在配置文件中,我做了下面的事情

<bean id="advice" class="p.AOPLogger" />
<aop:config>
  <aop:pointcut id="abc" expression="execution(*p.ABC.method2(..))" />
  <aop:aspect id="service" ref="advice">
    <aop:before pointcut-ref="abc" method="checkAccess" />          
  </aop:aspect>
</aop:config>

但是當我的method2被調用時,AOP功能沒有被調用,即checkAccess方法沒有被AOPLogger類調用。

我有什么想念的嗎?

trans by 2020-02-15T01:39:34Z

帶分頁的Spring數據和本機查詢

在一個Web項目中,將最新的spring-data(1.10.2)與MySQL 5.6數據庫一起使用,我試圖使用帶有分頁的本機查詢,但是在啟動時遇到containsPageableOrSortInQueryExpression

更新:20180306此問題現在已在Spring 2.0.4中修復。對于仍對舊版本感興趣或仍在使用舊版本的人,請查看相關答案和評論以找到解決方法。

根據spring-data文檔中使用@Query的示例50,可以指定查詢本身和countQuery,如下所示:

public interface UserRepository extends JpaRepository<User, Long> {
  @Query(value = "SELECT * FROM USERS WHERE LASTNAME = ?1",
    countQuery = "SELECT count(*) FROM USERS WHERE LASTNAME = ?1",
    nativeQuery = true)
  Page<User> findByLastname(String lastname, Pageable pageable);
}

出于好奇,在containsPageableOrSortInQueryExpression類中,我可以看到它包含以下代碼來檢查它是否為有效的jpa查詢:

public NativeJpaQuery(JpaQueryMethod method, EntityManager em, String queryString, EvaluationContextProvider evaluationContextProvider, SpelExpressionParser parser) {
   super(method, em, queryString, evaluationContextProvider, parser);
   JpaParameters parameters = method.getParameters();
   boolean hasPagingOrSortingParameter = parameters.hasPageableParameter() || parameters.hasSortParameter();
   boolean containsPageableOrSortInQueryExpression = queryString.contains("#pageable") || queryString.contains("#sort");
   if(hasPagingOrSortingParameter && !containsPageableOrSortInQueryExpression) {
       throw new InvalidJpaQueryMethodException("Cannot use native queries with dynamic sorting and/or pagination in method " + method);
   }
}

我的查詢包含containsPageableOrSortInQueryExpression參數,因此falsetrue,但它也在queryString(這是我未提供的)中尋找queryString#sort序列。

我嘗試在查詢末尾添加containsPageableOrSortInQueryExpression(這是一條注釋),這使驗證通過可以领救济金的游戏,但是執行失敗,說查詢需要一個附加參數:3而不是2。

有趣的是,如果我在運行時將containsPageableOrSortInQueryExpressionfalse手動更改為true,查詢工作正常,所以我不知道為什么要在我的queryString處檢查該字符串,并且不知道如何提供它。

任何幫助將非常感激。

更新01/30/2018似乎Spring-data項目的開發人員正在通過Jens Schauder的PR來解決此問題。

trans by 2020-02-13T22:40:57Z

spring-注釋指定的Bean名稱與現有的不兼容Bean d沖突

我對某些Spring bean定義有疑問。 我的main()方法正在加載幾個上下文xml文件,并且它們幾乎都包含一個標記。 當我的主要方法啟動時,我從Spring得到這個錯誤:

Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'converterDAO' for bean class [my.package.InMemoryConverterDaoImpl] conflicts with existing, non-compatible bean definition of same name and class [my.other.package.StaticConverterDAOImpl]

這兩個DAO類都以這種方式注釋:

@Repository("converterDAO")
public class StaticConverterDAOImpl implements ConverterDAO {
...
}

內存中的dao還具有@Repository(“ converterDAO”)批注。 dao在其他這樣的類中被引用:

...
private @Autowired @Qualifier("converterDAO") ConverterDAO converterDAO;
...

我希望一個DAO覆蓋另一個DAO的定義,據我所知,這是首先使用DI框架的主要原因之一。 多年來,我一直在使用xml定義進行此操作,并且從未遇到任何問題。 但是組件掃描和帶注釋的bean定義不是這樣嗎? Spring說它們“不兼容”是什么意思? 它們實現相同的接口,并且自動連接到該接口類型的字段中。 為什么它們不兼容?

有人可以為我提供一種方法,使一個帶注釋的,經過組件掃描的bean覆蓋另一個嗎?

-麥克風

trans by 2020-02-13T19:40:22Z

春天-為什么在Java EE中使用CDI

我知道有很多文章可以解釋如何在Java EE中使用CDI,但是我很難弄清楚這實際上帶來了什么好處。 例如,假設我有一個當前使用Foo實例的類。 我可能會

Foo myFoo = new Foo();

要么

// Better, FooFactory might return a mock object for testing    
Foo myFoo = FooFactory.getFoo();

我一直在閱讀CDI,我可以做到:

@Inject
Foo myFoo;

但是為什么這比以前的基于工廠的方法更好呢? 我認為還有一些我不知道的用例,但我無法識別。

如果我理解下面的響應,則概念是DI框架充當集中配置的主對象工廠。 這是合理的解釋嗎?

更新資料

從那時起,我就開始學習Spring,這現在變得更加有意義。 下面的段落摘自Spring in Practice可以领救济金的游戏,并舉例說明了AccountService類,該類使用了AccountDao的實例。我為長引號表示歉意,但我認為這確實引起了為什么注入的資源提供超出標準初始化的功能的原因。 。

您可以使用new關鍵字構造AccountService,但是創建服務層對象很少那么簡單。 它們通常取決于DAO,郵件發件人,SOAP代理等等。 您可以在AccountService構造函數中以編程方式實例化每個依賴項(或通過靜態初始化),但是這會導致硬性依賴項以及更改被替換時級聯更改。

此外,您可以在外部創建依賴項,并通過setter方法或構造函數參數在AccountService上進行設置。 這樣做可以消除硬的內部依賴關系(只要它們在AccountService中通過接口聲明即可),但是您到處都有重復的初始化代碼。 這是創建DAO并將其連接的方法以春季的方式取決于您的AccountService:

<bean id="accountDao" class="com.springinpractice.ch01.dao.jdbc.JdbcAccountDao"/>
<bean id="accountService"
    class="com.springinpractice.ch01.service.AccountService">
    <property name="accountDao" ref="accountDao"/>
</bean>

如上所述配置了bean之后,您的程序現在可以從Spring ApplicationContext請求AccountService的實例,并且Spring DI框架將在實例化之后實例化所有需要實例化的內容。

trans by 2020-02-12T12:59:06Z

java-使用Spring Data JPA查找實體時如何啟用LockModeType.PESSIMISTIC_WRITE?

我該如何實現與以下代碼等效的功能:

tx.begin();
Widget w = em.find(Widget.class, 1L, LockModeType.PESSIMISTIC_WRITE);
w.decrementBy(4);
em.flush();
tx.commit();

...但是使用Spring和Spring-Data-JPA批注?

我現有代碼的基礎是:

@Service
@Transactional(readOnly = true)
public class WidgetServiceImpl implements WidgetService
{
  @Autowired
  private WidgetRepository repo;
  @Transactional(readOnly = false)
  public void updateWidgetStock(Long id, int count)
  {
    Widget w = this.repo.findOne(id);
    w.decrementBy(4);
    this.repo.save(w);
  }
}

但是我不知道如何指定updateWidgetStock()方法中的所有操作都應使用悲觀鎖集。

Spring Data JPA批注updateWidgetStock()可讓您設置LockModeType.PESSIMISTIC_WRITE,但我不知道將其放在updateWidgetStock方法上是否有效。 聽起來更像是WidgetRepository上的注釋,因為Javadoc說:

org.springframework.data.jpa.repository
@Target(值=方法)
@Retention(值=運行時間)
@記錄
公共@接口鎖
用于指定執行查詢時要使用的LockModeType的注釋。 當在查詢方法上使用Query或從方法名稱派生查詢時,將對它進行評估。

...因此似乎無濟于事。

如何使我的updateWidgetStock()方法與LockModeType.PESSIMISTIC_WRITE集一起執行?

trans by 2020-02-12T09:56:23Z

eclipse-動態Web模塊3.0-3.1

我有一個基于代碼的簡化配置的Spring 3.2.4 Web應用程序。當我首先使用Maven / pom.xml構建應用程序時,我收到一個錯誤,提示缺少web.xml。首先,我嘗試創建一個空的web.xml。 這是項目方面改變的時刻(我不知道為什么)。 它從動態Web模塊3.0切換到3.1,這是不可逆的。如何再次將其更改為Dynamic Web Modules 3.0?

enter image description here

另外,我無法刪除JAX-RS。 嘗試此操作將導致:

Failed while uninstalling JAX-RS (REST Web Services) 1.0.
org.eclipse.jst.javaee.web.internal.impl.WebAppImpl cannot be cast to org.eclipse.jst.j2ee.webapplication.WebApp

后來我發現可以通過將相應的插件插入pom.xml來避免Maven編譯錯誤:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>
trans by 2020-02-11T07:06:06Z

xml-如何全局設置Jackson以忽略Spring中的未知屬性?

Jackson具有使用以下命令忽略類中未知屬性的注釋:

@JsonIgnoreProperties(ignoreUnknown = true) 

它允許您使用以下注釋忽略特定屬性:

@JsonIgnore

如果要全局設置,可以修改對象映射器:

// jackson 1.9 and before
objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// or jackson 2.0
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

如何使用spring進行全局設置,以便在服務器啟動時可以設置為@Autowired,而無需編寫其他類?

trans by 2020-02-11T05:14:14Z

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 下一頁 共31頁