我对Spring不太熟悉,并且遇到以下情况:
存储库类:
@Repository
public class MyRepository {
// ...
}
使用存储库类的类:
public class MyClass extends AbstractClass {
@Autowired
private MyRepository myRepository;
//...
}
我知道,如果我用注释MyClass
并@Component
与一起使用@Autowired
,则@Autowired
MyRepository
可以解决。问题是我处于一种需要创建MyClass
带有反射的新实例的情况下。因此MyRepository
永远不会解决,并且始终为null。
@Autowired
在这种情况下有没有办法使用?
更好地解释我的情况:我有一些实现AbstractClass
。在我的应用程序的设置阶段,我将创建HashMap
以下实现。基本上:
{"MyClass", MyClass.class}
//...
然后,我有了一个泛型Controller
,可以/{class}?options=...
使用{class}
@PathVariable
,HashMap
上面的内容和反射内容映射到url
,我可以根据给定的内容创建类的实例options
(这部分很重要)。你们认为这样做有更好的方法吗?
提前致谢
Spring本身通过提供为你的对象做自动装配的一些功能,你创建new
或者newInstance()
或什么的。
要使用它,您需要AutowireCapableBeanFactory
通过Spring的常规依赖项注入获得@Autowired
。
@Autowired
private AutowireCapableBeanFactory autowireCapableBeanFactory;
然后,使用其autowireBean(Object)
方法将@Autowired
属性注入到bean中。
Object myBean = map.get(className).newInstance();
autowireCapableBeanFactory.autowireBean(myBean);
设计说明:
如果您确实需要上述方法,请仔细考虑。Javadoc
AutowireCapableBeanFactory
建议不要在大多数用例中使用此接口:
BeanFactory的此子接口不能在常规应用程序代码中使用:坚持使用
BeanFactory
或ListableBeanFactory
用于典型用例。其他框架的集成代码可以利用此接口来连接和填充Spring无法控制其生命周期的现有bean实例。例如,这对于WebWork操作和Tapestry页面对象特别有用。
需要一些关于Spring自动装配和范围的帮助。 这是基本的应用程序结构: > CustomHttpClient由我的应用程序中的多个服务使用。每当我使用CustomHttpClient时,我都会通过以下方式自动连接该客户端的实例: 我使用拦截器修改CustomHttpClient中的一些变量,如下所示: 现在,问题来了。如果我按照上述方式设置了所有内容,那么每当我通过拦截器更改CustomHttp
作为大多数Spring Boot新用户,我对@Autow的问题:D 我已经在这里阅读了大量有关此注释的主题,但仍然无法找到解决问题的正确方法。 假设我们有这个Spring Boot层次结构: 类,我们希望在每次调用时实例化它: Out get controller,它会在每个请求中创建新的SomeRepo对象: 最后,使用@Autowired创建TestWire实例的类: 假设我们多次向“/”发出
这是给正儿八经的“Springers”们的问题... 我想使用MongoRepository。所以我去了Spring.io网站的MongoDB CRUD操作教程; 第一个问题是他们使用的是Spring Boot。第二个问题是他们在接口上使用。那个注释似乎可以创建一个对象(以后从这个对象调用方法...) 所以....我使用的是常规的spring MVC,而似乎在那里不起作用。 包含的类
问题内容: 当我运行TaskJob时,我得到了空指针异常,因为Spring不会自动装配serviceJob服务。是新线程导致此问题,因为Spring自动连接mysqlService没有任何问题? 我的applicationContext.xml; 我的课是; 编辑: TaskJob实例化; 问题答案: Spring仅自动装配其创建的组件。您正在调用新的TaskJob(),Spring不知道该对象,
我的情况是: 我正在构建一个Spring Boot应用程序,当我在控制器中自动连接UserRepository时,它会初始化它,当我尝试调用findByUserName方法时,一切都正常。 用户控制器 创建控制器后,我需要使用Spring Security来保护控制器的路径,因此我在SecurityConfig类中添加了以下配置: 安全配置 现在,当我尝试将请求发布到/登录路径时,我在Custom
问题内容: 谁能告诉我如何从字符串创建Type的新实例?反映? 有示例,但它们适用于语言[:(]的旧版本(Go 1之前的版本) 问题答案: 因此,如果我正确理解了您的问题,那么您在问的是,仅将类型名称作为字符串时,如何创建对象。因此,例如,您可能有一个字符串“ MyStruct”,并且想要创建这种类型的对象。 不幸的是,这是不容易实现的,因为Go是一种静态类型的语言,并且链接程序将消除无效代码(或