@Service
class Data {
public String getData(){
return "DATA";
}
}
class Access{
@Autowired
private Data data;
public String myData(){
return data.getData(); // Null pointer exception
}
}
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
@GetMapping("/")
String print(){
// Accesses the Library
Access access=new Access();
return access.myData();
}
@SpringBootApplication
@ComponentScan(basePackages = { "com.service", "com.library" }) // Hopes this Scans the library package
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
}
}
pom.xml
<dependency>
<groupId>com.library</groupId>
<artifactId>library</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
如果我从库代码中删除Autowired并正常创建对象(使用new关键字),一切都很好。所以我的问题是,为了使用注释,需要带有@SpringBootApplication的Main类,没有Main类我们不能运行它吗?
如果您不依赖任何Spring AOP特性(例如@transactional
),那么最好的做法是完全不要这样做。字段上的@autowired
是脆弱的;相反,使用普通构造函数。如果您只有一个构造函数,Spring就不需要注释来实例化bean,这使得您的类可以在不同的DI环境或普通Java中使用(例如用于测试)。
同样,不要将@service
放在库中的类上;需要它的客户端可以简单地使用@import
将其拉入。
其中一个例外是,如果提供引导自动配置设置,该模块将需要依赖于spring-boot-autoconfigure
来访问注释。请注意,通常将初学者放在一个单独的依赖项中,该依赖项只包含引导类和元文件。
我只想使用@scheduler注释定期运行spring boot main方法。我已经指定了一些附加代码,这些代码将在启用REST服务之前执行一些预操作。 我想每10秒运行一次上面的主方法。并在主方法中添加了@时间表注释。但它抛出了一个例外: 根据doc@Scheduler的预期行为应调用一个没有args[]的方法 我想在main方法中使用注释,如下所示: 错误: 组织。springframewo
问题内容: 是否可以使用Hibernate验证程序API将经过验证的对象存储在带有注释的字段中?例如,我想通过调用Java方法而不是在Java bean属性上添加注释来验证地址。 问题答案: 是的,有可能。尝试类似的东西, 看看这里。 (编辑必须为6个字符)
我对AOP相当陌生。我正在尝试使用AspectJ在没有Spring的maven项目中创建注释。然而,我试图使用@方面调用的方法没有被调用。 这就是我的pom看起来的样子: 注释如下所示: 我为我的注释创建了一个注释处理器: } 我在这次通话中称之为: 我创建了一个aop。xml文件,并将其放置在与pom相同的文件夹中。xml。 当我调用createPurchase方法时,它在没有首先调用@Befo
问题内容: 我没有用Java 获得注释。如果它自动为您继承方法,那么如果我需要以自己的方式实现该方法,那又如何呢? 怎么知道我的实现方式? 另外,据说如果我不想使用它,而是以一种老式的Java方式执行它,则必须实现类的,和方法以及类的注释类型方法。 这是为什么? 即使我不知道注释和以前运行良好的程序,我也从未实现过。 请有人从头开始向我解释一下。 问题答案: 只是没有误会:您确实要询问java.l
我正在从下面的方法中获取电影列表,并带有@Cacheable注释。由于它没有任何参数,我将key设置为#root.method.name。 现在,我想添加一个新的电影,同样应该添加到上述缓存。 我试过这个,但它给了我例外。 我们可以在这里使用@CachePut注释,还是有其他方法?