当前位置: 首页 > 知识库问答 >
问题:

这两个代码(Spring引导)有什么区别?

赵景曜
2023-03-14
@Component
public class AdminSqlUtil implements SqlUtil {
    
    @Autowired private ApplicationContext context;
    DataSource dataSource =(DataSource) context.getBean("adminDataSource");
    
    public void runSqlFile(String SQLFileName) {
        Resource resource = context.getResource(SQLFileName);
        EncodedResource encodedResource = new EncodedResource(resource, Charset.forName("UTF-8"));
        try {
            ScriptUtils.executeSqlScript(dataSource.getConnection(), encodedResource);
        } catch (SQLException ex) {
            throw new RuntimeException(ex);
        } 
    }

第二个代码

@Component

public class AdminSqlUtil implements SqlUtil {
    
    @Autowired private ApplicationContext context;

    public void runSqlFile(String SQLFileName) {
        Resource resource = context.getResource(SQLFileName);
        EncodedResource encodedResource = new EncodedResource(resource, Charset.forName("UTF-8"));
        try {
            ScriptUtils.executeSqlScript((DataSource)context.getBean("adminDataSource").getConnection(), encodedResource);
        } catch (SQLException ex) {
            throw new RuntimeException(ex);
        }
    }

共有1个答案

姜景辉
2023-03-14

第一个具有private作用域,框架不能访问它。您可以在私有范围变量之前添加@inject,以便框架可以初始化它。然而,最佳实践是定义一个公共依赖项设置器来使其工作。

另一方面,第二个在开始时启动值,顺便说一下,这不是依赖注入。我不是在说好的和坏的练习。这是错误的。我们不初始化应该由框架初始化的变量。

所以让我们使用第一个,尝试为它添加一个setter

 类似资料:
  • 错误: Test.ts(18,30):错误TS2345:类型为“{color1:String;}”的参数不能分配给类型为“squareConfig”的参数。对象文本只能指定已知属性,并且“SquareConfig”类型中不存在“Color1”。

  • 用这2行代码创建的对象有什么区别? 类创建具有、、和数据字段的人员。类是的子类,它添加了。

  • 问题内容: 我正在阅读DigitalOcean的golang客户程序。我注意到他们在变量中创建了* Op结构的实例。示例:https: //github.com/digitalocean/godo/blob/master/droplets.go#L32 为什么需要此行? 问题答案: 该行是*DropletsServiceOp满足DropletsService接口的编译时检查。 该行对程序的执行没有

  • 本文向大家介绍stopPropagation()和preventDefault()这两个方法有什么区别?相关面试题,主要包含被问及stopPropagation()和preventDefault()这两个方法有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 stopPropagation 是阻止事件冒泡,即冒泡事件到当前元素处就终止了,不会继续向上级元素传递。 preventDefault

  • 问题内容: 我正在阅读有关ConcurrentModificationException以及如何避免它的信息。找到了一篇文章。该文章中的第一个清单具有与以下相似的代码,这显然会导致异常: 然后,它继续以各种建议解释如何解决该问题。 当我尝试重现它时,我没有遇到异常! 为什么我没有得到例外? 问题答案: 根据JavaAPI文档,Iterator.hasNext不会抛出。 检查后,您从列表中删除了一个

  • 和有什么区别?他们彼此有关系吗?或者它们只是并发实现? 是否有人与他们一起工作,并能给出/解释两者的利弊? 使用我指的是ng-bootstrap.github和 与我的意思是valor-software-ngx-bootstrap。 两者都与Angular 4有关(不是AngularJS!)和引导4。 请注意,这不是一个重复的问题ngx-bootstrap和ng2 bootstrap之间的区别?。