回答:
これは、のautowireBean()メソッドを使用して行うことができますAutowireCapableBeanFactory。任意のオブジェクトを渡すと、Springはそれをそれ自体が作成したもののように扱い、さまざまな自動配線のビットやピースを適用します。
を手に入れるにはAutowireCapableBeanFactory、それを自動配線するだけです:
private @Autowired AutowireCapableBeanFactory beanFactory;
public void doStuff() {
MyBean obj = new MyBean();
beanFactory.autowireBean(obj);
// obj will now have its dependencies autowired.
}
codeプライベート@Autowired AnotherBean Bean; public void doStuff(){MyBean obj = new MyBean(bean); } code。これらのすべての注釈と同じように思われ、人々は本当に混乱し、1日目からJava SDKにあった基本的なパターンを使用しません:(
MyClassに@Configurableアノテーションを付けることもできます。
@Configurable
public class MyClass {
@Autowired private AnotherClass instance
}
次に、作成時に依存関係を自動的に挿入します。また<context:spring-configured/>、アプリケーションコンテキストxmlにも必要です。
<context:spring-configured/>ますか?
@ glaz666の回答で述べられている@Configurableアプローチに従う私のソリューションを共有したかったので、briefly
Spring Neo4j & Aop starts(とにかく関係ありません)Spring Bootを使用@Configurableする準備ができたら、Beanをインスタンス化します(を使用ApplicationRunner)機能させるには、以下の手順に従う必要がありました
@Configurable(preConstruction = true, autowire = Autowire.BY_TYPE, dependencyCheck = false)あなたの上に置かれるようにBean手動でインスタンス化することです。私の場合、Bean手動でインスタンス化されるものには@Autowiredサービスがあるため、上記の注釈の小道具です。XXXApplicaiton.java(またはでアノテートされたファイルを@SpringBootApplication持つ)@EnableSpringConfiguredと、@EnableLoadTimeWeaving(aspectjWeaving=AspectJWeaving.ENABLED) compile('org.springframework.boot:spring-boot-starter-aop')し、compile('org.springframework:spring-aspects:5.0.7.RELEASE') Beanは、@Configurableどこにでも注釈が付けられており、その依存関係は自動配線されているはずです。*上記のポイント#3に関して、私は(ここでmavencentralに示されているように)org.springframework.boot:spring-boot-starter-aop推移的にプルすることを認識していspring-aopますが、私の場合、Eclipseが注釈を解決できなかったため、スターターに加えて依存関係を明示的に追加しました。同じ問題に直面した場合は、依存関係を宣言するか、理解するという冒険に進んでください@EnableSpringConfiguredspring-aop
org.springframework.context.annotation.aspect.*利用できない