2010-05-04 30 views

Trả lời

4

Không, nó không thể bơm một giá trị cho một lĩnh vực tĩnh từ bối cảnh XML của bạn.

Nếu bạn có thể thay đổi lớp, bạn có những lựa chọn đơn giản sau đây:

  • loại bỏ các modifier tĩnh và thêm @ Tiêm/@ Autowire trên lĩnh vực
  • thêm một constructor/setter/phương pháp init.

Khác, bạn có thể làm điều đó với hỗ trợ cấu hình Java của Spring.

Một ví dụ:

Lớp Demo với trường tĩnh và một phương pháp JUnit đó khẳng định rằng container mùa xuân tiêm giá trị truy nã vào trường tĩnh:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration("test-context.xml") 
public class Demo { 

    public static String fieldOne; 

    @Test 
    public void testStaticField() { 
     assertEquals("test", fieldOne);  
    } 
} 

Thêm không gian tên ngữ cảnh để bạn phần tử appContext và component-scan:

<context:component-scan base-package="com.example" /> 

Thêm đậu của bạn với trường tĩnh như sau:

@Configuration 
public class JavaConfig { 

    @Bean 
    public Demo demo() { 
     Demo.fieldOne = "test"; 

     return new Demo(); 
    } 
} 

Trong trường hợp này, lớp JavaConfig phải nằm trong gói com.example như được khai báo trong phần tử quét thành phần.

Các vấn đề liên quan