- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试设置一个 @Configurable
域对象(不由 spring 容器管理)。
我通过添加 -javaagent:path/to/spring-instrument.jar
来解决这个问题作为一个 JVM 参数,但我不是 100% 清楚这个 -javaagent 是否必须到位。我在 Tomcat 8 上运行它。我可能误解了 documentation但似乎我可以使用另一种机制来实现这一点,特别是这一行:
Do not define
TomcatInstrumentableClassLoader
anymore onTomcat 8.0
and higher. Instead, let Spring automatically use Tomcat’s new nativeInstrumentableClassLoader
facility through theTomcatLoadTimeWeaver
strategy.
@SpringBootApplication
@EnableLoadTimeWeaving
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
@Bean
public MyService myService(){
return new MyService();
}
}
@Configurable
public class MyDomainObject {
@Autowired
private MyService myService;
public MyService getMyService(){
return myService;
}
}
public class MyService {
private static final Logger log = LoggerFactory.getLogger(MyService.class);
public void test(){
log.info("test");
}
}
getMyService()
上面的方法返回null。作为胖 jar 启动会在启动期间引发以下错误:
Caused by: java.lang.IllegalStateException: ClassLoader [sun.misc.Launcher$AppClassLoader] does NOT provide an 'addTransformer(ClassFileTransformer)' method. Specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent: -javaagent:org.springframework.instrument.jar
Specify a custom LoadTimeWeaver
在 Tomcat 8 中?正如文档所述,似乎没有什么会自动发生,但我可能再次误解了这到底意味着什么。
最佳答案
你可以试试这个:
@Bean
public InstrumentationLoadTimeWeaver loadTimeWeaver() {
return new InstrumentationLoadTimeWeaver();
}
<dependency>
<groupId>de.invesdwin</groupId>
<artifactId>invesdwin-instrument</artifactId>
<version>1.0.2</version>
</dependency>
@SpringBootApplication
@EnableLoadTimeWeaving
public class TestApplication{
public static void main(final String[] args) {
DynamicInstrumentationLoader.waitForInitialized(); //dynamically attach java agent to jvm if not already present
DynamicInstrumentationLoader.initLoadTimeWeavingContext(); //weave all classes before they are loaded as beans
SpringApplication.run(TestApplication.class, args); //start application, load some classes
}
}
关于spring-boot - Tomcat 8、Spring Boot、@Configurable LoadTimeWeaving 没有 -javaagent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33158039/
我在 spring xml 文件中声明entityManager bean 时看到一些使用“Simple Load Timer Weaver”的代码,如下所示:
有一个带有实体和 daos (openjpa) 的 jar 模块,以及一个使用 spring 将它们连接到 Controller 的 web 模块。 jar 模块中的测试运行良好,但是当尝试在 web
我正在尝试使用 Spring 和 AspectJ 实现加载时间编织。据我所知,我已经正确配置了所有内容,但是当我尝试运行集成测试时,我不断收到错误消息: org.springframework.bea
Spring AspectJ 加载时编织配置正在构建和加载服务器,没有任何错误,但方面没有被调用。 这是配置列表1)JDK 82)服务器 jetty @Configuration @Component
我需要使用对象列表进行访问控制。获取该列表的查询非常复杂且冗长,因此当用户通过服务器进行身份验证时,我想将其缓存在用户对象中。我决定尝试通过 UserDetailService 和 WebSecuri
我正在使用 tomcat 作为我的网络服务器,并且想使用 fetch = FetchType.lazy我所有@OneToOne 注释的注释,但 spring 恢复了我的惰性设置,给我 eclipsel
我有一个已知的问题,即 Hibernate 会加载数据,即使使用注释 fetchtype.lazy(例如此处描述:http://justonjava.blogspot.de/2010/09/lazy-
我目前正在做一个 Maven 项目,但每次我尝试部署我的 war 时,我都会遇到以下异常: ERROR [DispatcherPortlet:276] Context initialization f
我们有一个生产 Java 1.6/Tomcat 7/Spring 4 应用程序。 我们正在将它移动到 Openjdk 11。这意味着 Spring 5,我认为它也可能包括 Tomcat 9,因为我们正
似乎无法让我的 spring webapp 使用 jetty-maven 插件 我总是得到 org.springframework.beans.factory.BeanCreationExceptio
在我的 Spring Boot 1.3.3 Tomcat 8(嵌入式开发,独立生产)应用程序中,我将从 Spring 代理事务模式转移到 AspectJ 事务。 我添加了以下应用程序配置: @Enab
我正在使用注解在现有的 spring 项目上添加 Spring Cache。我使用 Couchbase 作为缓存提供程序。我想使用 AspectJ 的加载时间编织来允许私有(private)方法调用和
我正在尝试设置一个 @Configurable域对象(不由 spring 容器管理)。 我通过添加 -javaagent:path/to/spring-instrument.jar 来解决这个问题作为
我有一个启用了 LoadTimeWeaving 的 Spring Boot 项目。当我告诉 Gradle 使用 Spring Boot 1.4.3(或更高版本)而不是 1.4.2 时,应用程序无法再启
我是一名优秀的程序员,十分优秀!