java spring使用@Autowired与构造器进行变量初始化

如果要在构造器里引用其他被依赖的bean来初始化类的变量,较好的实现方式是

  1. 用@Autowired注解构造函数
  2. 并且增加一个有依赖关系的传参
  3. 同时类变量也用@Autowired注解以便其它函数使用(不必在构造函数里使用this.client = client;这种方式来手动赋值)。
@Service
public class StoreService {
	@Autowired
	private Client client;

        private final Store store;

	@Autowired
	public StoreService(Client client) {
	    this.store = client.getStore();
	}

        public void doLogic(){
             this.client.print();
             this.store.print();
        }
}

还有一种方式是另外写一个初始化函数并用@PostConstruct注解,但这种方式有个缺点是不能初始化final的类变量。

@Service
public class StoreService {
	@Autowired
	private Client client;

        private Store store;


        public StoreService() {

	}

	@PostConstruct
	private void init() {
             this.store = client.getStore();
	}


        public void doLogic(){
             this.client.print();
             this.store.print();
        }
}

猜你喜欢

转载自blog.csdn.net/pengpengzhou/article/details/82218623
今日推荐