Trong một lớp học của tôi có một thành viên public static String
và tôi cần đặt giá trị này trong applicationContext.xml
! Tức là, chúng ta có thể tiêm một giá trị cho thuộc tính tĩnh này không?Tiêm các giá trị cho hằng số tĩnh trong Spring
14
A
Trả lời
11
vâng đó là một ví dụ về liên kết này http://planproof-fool.blogspot.com/2010/03/spring-setting-static-fields.html
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.