Tag: autowired

什么是@Repository和@Autowired用于。 (弹簧)

我正在学习java 3个月,有时我无法理解某些东西的使用目的。 一个主题是dependency injection和spring bean我想出了finally =) 现在我混淆了两个注释@Autowired和@Repository。 首先Autowiring是什么意思? 然后我为什么要使用它们,使用它们和不使用它们之间有什么区别? 今天我也尝试在spring mvc项目中使用hibernate,我不得不搜索大约15个(类找不到错误的原因)jar文件,因为项目中使用的其他jar文件的依赖项。 这是不是必须这样? 这使得初学者学习java非常困难 谢谢…

Spring 3.2 Autowiregenerics类型

所以我在Spring 3.2中有许多generics,理想情况下我的架构看起来像这样。 class GenericDao{} class GenericService<T, T_DAO extends GenericDao> { // FAILS @Autowired T_DAO; } @Component class Foo{} @Repository class FooDao extends GenericDao{} @Service FooService extends GenericService{} 遗憾的是,对于generics的多个实现,自动assembly会引发有关多个匹配bean定义的错误。 我认为这是因为@Autowired进程在类型擦除之前。 我找到或想出的每一个解决方案看起来都很难看,或者只是莫名其妙地拒绝工作。 解决这个问题的最佳方法是什么?

自动装入列表时的Bean顺序

我已经定义了一个接口IWorker ,它的一些实现作为WorkerA和WorkerB ,都用@Component注释。 然后我通过以下方式将它们自动装入我的应用: @Autowired private List workers = new ArrayList(); 工人被列入清单的顺序取决于什么? 如何通过我的applicationContext.xml将未使用@Component注释的其他WorkerC和WorkerD (也是IWorker实现)自动装入同一列表? 是否保留了xml中WorkerC和WorkerD的顺序? 是否有一条规则可以依赖于工人A,B,C和D将被列入清单的顺序?

上下文:annotation-config是@AutoWired的替代品吗?

我可以在我的XML配置中放置context:annotation-config config并且它会自动注入bean类而不需要任何注释是否正确? 所以不要使用这些注释类型: public class Mailman { private String name; @Autowired private Parcel Parcel; public Mailman(String name) { this.name = name; } @Autowired public void setParcel(Parcel Parcel) { this.Parcel = Parcel; } @Autowired public void directionsToParcel(Parcel Parcel) { this.Parcel = Parcel; } } 我只需要写这个: 然后我的MailMan类看起来会更简单,而不需要注释: public class Mailman { private String name; private Parcel Parcel; […]

使用@Autowired与AspectJ和Springboot

我想将@Autowired注释用于“Aspect”。 我想在我的方面注入一个存储库但是当我尝试调用我的自动连接类的方法时,会发生NullPointException。 @Aspect public class AspectSecurity { @Autowired private UserRepository userRepository; @After(“execution(public * dash.*.*Controller.*(..))”) public void authentication(JoinPoint jp) throws UnauthorizedException { System.out.println(“SECURITY !”); System.out.println(userRepository.findAll().toString()); } } 我已经尝试在我的方面类上面添加@Component但是我有同样的错误。 如果我不使用方面类但是@Controller我可以毫无问题地调用我的存储库。 一些文档说明了使用xml文件的spring配置,但是使用spring boot我没有这些文件。 这是我的pom.xml的一部分,它调用了aspectJ插件: org.codehaus.mojo aspectj-maven-plugin 1.4 true 1.6 1.6 ignore ${compiler.version} UTF-8 false org.springframework spring-aspects compile test-compile org.aspectj aspectjrt ${aspectj.version} org.aspectj aspectjtools ${aspectj.version} 这是我的Application类: package dash; import […]

自动assembly:预计至少有一个bean可以作为此依赖关系的autowire候选者

好的,我知道围绕同一主题提出了很多问题。 但我似乎无法做任何事情。 也可能是我还没有完全理解汽车接线概念。 我的问题:我能够到达所需的页面,但每当我点击任何按钮执行操作时,我都会得到Null指针exception,这似乎很明显,因为我不认为spring能够正确映射所需的bean。 所以,当我添加@ autowired = true时,它会给我上面给出的例外情况。 我不确定需要做什么。希望有人可以帮我解决这个问题。 也会喜欢一个解释:)代码: @Entity @Table(name=”userDetails”) public class UserDetailModel { @Id @GeneratedValue(strategy=GenerationType.AUTO) public int user_id; public String password; public String user_name; public String active_status; public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getUser_name() { return user_name; } public void […]

带有Spring的EJB3

我已经明白,如果我在Spring上下文中使用EJB,我会得到所有相同的好处,就像我在“纯”EJB3环境中使用它一样,这是真的吗? 我用谷歌搜索,但找不到明确,明确的答案。 例如,假设我有一个会话bean来更新数据库中的某些表,并引发系统exception。 在“纯”EJB3环境中,事务将回滚。 如果我使用Spring @Autowire这个bean,那么Spring会像EJB3容器一样处理事务处理吗? 或者是什么? 它可能需要一些特定的配置还是完全“自动”?

确保从非弹簧环境加载弹簧豆

我有弹簧应用程序(jersey2.6类和servlet)。 我需要从jersey / non spring环境中获取Spring bean, 类似的问题建议在上下文的静态包装中获取上下文 public static ApplicationContext getContext() { return context; } 如何确定上下文已加载或不为null? 如果我不能,我应该等待/检查,直到加载弹簧上下文? 在从泽西上下文调用或从简单的HttpServlet代码调用bean的情况下 编辑 Jersey使用jersey-spring3依赖jar工作正常,所以我的问题只是关于Servlets的Spring控件 编辑2 该应用程序正在加载不同于@entpnerd建议文章的弹簧 它注册了一个实现WebApplicationInitializer的Servlet public class MyWebAppInitializer implements WebApplicationInitializer { 但是也在web.xml中配置了DispatcherServlet 如何在Spring加载后加载DispatcherServlet ? 因为我们在其init方法上添加了自动assemblyfunction: WebApplicationContextUtils.getRequiredWebApplicationContext(config.getServletContext()) .getAutowireCapableBeanFactory().autowireBean(this); 在提供请求之前添加超时是最喜欢的解决方案还是在类加载中有一个可以处理它的调整? 编辑3 我找到了注入的答案和答案 ,但不是为什么在Servlet之前加载Spring。

在Spring中,我可以从autowired bean中自动assembly新bean吗?

我通常只是将@Autowire的东西变成spring的物体。 但是我遇到了一种情况,我需要动态创建一些需要可以自动assembly的值的对象。 我该怎么办? 我能做的只是手动将自动assembly的值传递给新对象的构造函数。 我想做的就是在创建它时自动assembly每个新对象。 @Service public class Foo { @Autowired private Bar bar; /** This creates Blah objects and passes in the autowired value. */ public void manuallyPassValues() { List blahs = new LinkedList(); for(int i=0; i<5; ++i) { Blah blah = new Blah(bar); blahs.add(blah); } // … } /** This creates Blah objects […]

更清洁的方式来获得原型的自动assembly字段的新实例

我遇到了这个问题,同时尝试自动运行一个可运行的类,并在不同的调用中创建它的不同实例并将其保存在数组中。 xml配置是: 在我的代码中,我正在尝试这样的事情: public class ThreadHandler{ @Autowired private ABC threadName; //getter ABC getThreadName(){ return threadName; } public void someFunction(){ List abc = new ArrayList(ABC>(); for (int i=0;i<SOME_CONST;i++){ ABC tName = getThreadName(); abc.add(tName); tName.start(); } } } 让ABC成为一个Thread/Runnable/Callable 。 这样,它抛出java.lang.IllegalThreadStateException 。 但是,它工作正常,如果我使用ABC tName =appContext.getBean(“threadName”,ABC.class); 为什么会这样? 在尝试从getMethod获取对象时,我们不会获得新实例吗?