- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个基于 XML 的数据库,并且定义了一个用户模型,其中包含对角色(另一个模型)的引用列表。我已将 XMLAdapter 附加到 Roles 属性以自动填充角色。为此,我已在此适配器中 @autowired RoleRepository。
但是,无论我做什么,存储库都不会自动连接(始终null
)。我已经配置了编译时编织、加载时编织,并且还尝试了一个能够将自身加载到正在运行的 JVM invesdwin-instrument
中的检测 Java 代理。
@Configurable(autowire = Autowire.BY_TYPE)
public class RoleAdapter extends XmlAdapter<String, List<Role>> {
@Autowired
protected RoleRepository roleRepository;
public RoleAdapter() {
}
@Override
public List<Role> unmarshal(String nameList) throws Exception {
// code using roleRepository
}
@Override
public String marshal(List<Role> roles) throws Exception {
// some code
}
}
@SpringBootApplication
@EnableConfigurationProperties({MyProperties.class})
@EntityScan(basePackages = { ... })
@EnableDiscoveryClient
@EnableLoadTimeWeaving(aspectjWeaving=EnableLoadTimeWeaving
.AspectJWeaving.ENABLED)
@EnableSpringConfigured // tried this in a separate config
public class MyApplication {
static { // this was not here, added in a desperate move
DynamicInstrumentationLoader.waitForInitialized();
DynamicInstrumentationLoader.initLoadTimeWeavingContext();
}
// some code
/**
* Main method, used to run the application.
*
* @param args the command line arguments
*/
public static void main(String[] args) {
// dynamically attach java agent to jvm if not already present
DynamicInstrumentationLoader.waitForInitialized();
// weave all classes before they are loaded as beans
DynamicInstrumentationLoader.initLoadTimeWeavingContext();
if (!InstrumentationLoadTimeWeaver.isInstrumentationAvailable()) {
throw new IllegalStateException("Instrumentation not available!");
} else { // it always gets here
System.out.println("Instrumentation available!");
}
SpringApplication app = new SpringApplication(MyApplication.class);
DefaultProfileUtil.addDefaultProfile(app);
Environment env = app.run(args).getEnvironment();
logApplicationStartup(env);
}
// more code
}
以及用户中的角色字段
@XmlElement(type = String.class)
@XmlJavaTypeAdapter(RoleAdapter.class)
@XmlSchemaType(name = "IDREFS")
protected List<Role> roles;
我想知道我在编织方面错过了什么。也欢迎使用更简单的方法来实现这些自动填充属性。
最佳答案
通过忘记编译时编织和加载时编织,并将 RolesRepository
注入(inject) UsersRepository
中,初始化 RoleAdapter< 的实例,“解决”了该问题
使用注入(inject)的存储库并将此实例添加到解码器中。
@Repository
public class UserRepository extends TimestampRepository<User> {
public static final String USERS_BY_USERNAME_CACHE = "usersByUsername";
public static final String USERS_BY_EMAIL_CACHE = "usersByEmail";
public UserRepository(
MyProperties myProperties,
ExistTemplate existTemplate,
Jaxb2Marshaller marshaller,
Jaxb2Marshaller unmarshaller,
RoleRepository roleRepository) {
super(
new UserEntityInformation(myProperties.getDatabase().getDbname()),
existTemplate, marshaller, unmarshaller);
marshaller.setAdapters(new RoleAdapter(roleRepository));
unmarshaller.setAdapters(new RoleAdapter(roleRepository));
}
// more code
}
public class RoleAdapter extends XmlAdapter<String, List<Role>> {
protected final RoleRepository roleRepository;
public RoleAdapter(RoleRepository roleRepository) {
this.roleRepository = roleRepository;
}
@Override
public List<Role> unmarshal(String nameList) throws Exception {
// code using roleRepository
}
@Override
public String marshal(List<Role> roles) throws Exception {
// some code
}
}
关于java - XMLAdapter 上的编译时和加载时编织和自动连线不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57624394/
我有一个基于 XML 的数据库,并且定义了一个用户模型,其中包含对角色(另一个模型)的引用列表。我已将 XMLAdapter 附加到 Roles 属性以自动填充角色。为此,我已在此适配器中 @auto
我正在使用 JAXB(以及一些用于 XSLT 的 Saxon)解码 XML 数据。在我的 XML 文档中,我有一个日期字符串值。 我做了一些研究并尝试了 XMLAdapter 和 @XMLJavaTy
我将 CXF 2.4 与 JAXB 结合使用。 我可以为我的 owm 类(例如 LWDate)的所有实例设置一个全局 XmlAdapter 吗? 我写了一个类: public class LWDate
有没有办法在 XmlAdapter 中检索当前的基本 URI?或者这通常是如何实现的? public class Service{ ... @GET public MyEntity g
我正在尝试让 XmlAdapter 到 HashMap 工作,但我一直收到异常。我关注了this blog entry非常接近,我已经多次检查我的代码,但我没有看到问题。 我正在使用最新版本的 org
我需要生成一个 XML使用以下格式的文件 JAXB2 , 它同时具有固定 和可变 xml 内容。 约束是什么? 变量的内容XML零件应该是 5 个不同的 XML schema 之一(计划让 JAXB2
此类的实例是大型对象图的一部分,不在对象图的根部: public class Day { public Day(LocalDate date, List times) {
我正在制作一个应用程序,它将包含 XML 文件中的数据。 我现在遇到一个问题:JAXB 不编码我的子类,因此当我编码 XML 文件时,所有对象都是父类的对象。我尝试了 @XMLSeeAlso、Acce
我想转换我的 payaload 中的项目列表,并将它们转换为 HashMap 。基本上,我拥有的是一个 Item xml 表示,其中包含一个 ItemID 列表。每个 ItemID 中都有一个 idT
当我试图直接解码一个根对象时,我遇到了 jaxb 的 XMLAdapters 的限制,而不是它是另一个对象中的一个字段,因此绕过了@XmlJavaTypeAdapter 我宁愿不包装我的对象,因为这会
我有一个外部(即不可修改的)com.external.Money 类,它有一个带有 getter 和 setter 的 java.util.Currency 字段。在我的 CXF jaxws 网络服务
我正在使用 JAXB XMLadapter 来编码和解码 boolean 值。应用程序的 XML 文件也将由 C# 应用程序访问。我们必须验证此 XML 文件,这是使用 XSD 完成的。 C# 应用程
我必须生成一个 xml 元素,该元素的值可以是任何“原始类型”(xsd:string、xsd:boolean 等)。示例: String Value 2011-10-21 2011-10-21T12:
有了这个 Jaxb Xml 定义,我尝试通过添加 @XmlPath(".") 来删除 Map Elements Wrapper但在解码期间会导致异常 @XmlRootElement public ab
我想使用 EclipseLink MOXy 将对象树持久保存为 XML。但我希望使用自定义的 DoubleAdapter 来编写所有 double 类型的字段。我知道我可以使用基于包的注释来做到这一点
我正在尝试创建一个 @XmlAdapter 以将混合列表中的单词拆分为名为 Word 的 Wrapper 类的对象。该字段还可能包含名为 Group 的 Word 扩展的实例。 这个想法是这样的: S
我需要为特定的 XmlAdapter 安装 DefaultValidationEventHandler。从我读过的内容来看,你只能这样做: JAXBContext context = JAXBCont
我正在使用 jaxbMarshaller 为第三方库类生成 xml。由于将 Calendar 对象转换为字符串的库 XmlAdapter 不使用 TimeZone 字段,因此编码器为 pojo 类的每
如何将 EJB 注入(inject)到 XmlAdapter 中? 我的想法是,我想通过 REST API 获取 ID 列表,并将该 ID 数组转换为实体对象的对象列表。例如: public clas
我正在使用以下源代码执行一个 Maven 项目 package com.coderplus.jaxb; import java.util.HashMap; import javax.xml.bind.
我是一名优秀的程序员,十分优秀!