autowired bean имеет значение null для класса закрытого пакета транзакционного метода, называемого - PullRequest
0 голосов
/ 13 июля 2020

Я использую JBoss с Spring.

Оба method1 и method2 из TestService вызываются другим классом в том же пакете.

method1 вызов выполняется хорошо, но вызов method2 имеет исключение NullPointerException, потому что serviceA имеет значение null, когда вызывается метод 2.

Я знаю, что у меня не должно быть закрытого для пакета метода 2, аннотированного с помощью @Transactional, и я ожидаю, что метод 2 не будет транзакционным из-за этого, но не могу объяснить, почему serviceA имеет значение null при вызове метода 2.

Заранее спасибо за любые мысли.

testService.method1(); //good
testService.method2(); //NPE
@Transactional

@Service
public class TestService {
    
   @Autowired
    
   private ServiceA serviceA;

    
   
   public void method1() {
        
      this.serviceA.dosth();
                         
   }

    

   void method2() {
        
      this.serviceA.dosth();
    
   }

}

отслеживание при звонке на method1. cglib используется из-за отсутствия интерфейса

method1

method2 call, no proxy created:

метод2

...