有一种方法可以用Annotation替换constructor-arg吗?
我有这个构造函数:
public GenericDAOImpl(Class<T> type) {
this.type = type;
}
Run Code Online (Sandbox Code Playgroud)
我需要在我的Facade中注入:
@Inject
private GenericDAO<Auto, Long> autoDao;
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何在costructor中传递参数的值.
先感谢您
[更多信息]我试着解释我的问题.
<bean id="personDao" class="genericdao.impl.GenericDaoHibernateImpl">
<constructor-arg>
<value>genericdaotest.domain.Person</value>
</constructor-arg>
</bean>
Run Code Online (Sandbox Code Playgroud)
我想只使用注释转换该代码.有人可以解释一下吗?
没有 IOC 容器的正常方法是:
new User("Names", 22);
Run Code Online (Sandbox Code Playgroud)
这里的参数值是动态的,例如,它们是通过用户提交表单获取的,因此不能存储在文件中。
TextField userNames = new TextField();
names = userNames.getText()
Run Code Online (Sandbox Code Playgroud)
其他参数相同。
在哪里:
@Component
public class User {
public User(String names, int age) {
.
.
.
}
}
Run Code Online (Sandbox Code Playgroud)
我如何初始化User,同时传递构造函数的参数,其中 UserAutowired进入另一个类:
@Component
public class AnotherClass {
@Autowired
User user(....)????? // How do I do it here
.
.
.
}
Run Code Online (Sandbox Code Playgroud) 我在用春天.大多数情况下,我会注入组件和服务.但是现在我想用枚举键初始化一个映射并注入"Cache"实现的值,以便给定枚举我可以获得刷新缓存的对象.
Map<String,Cache>
Key Value
"category" @Inject Category
"attr" @Inject Attr
"country" @Inject Country
Run Code Online (Sandbox Code Playgroud)
我的班级就像
public abstract class Cache{
refreshCache() {
clearCache();
createCache();
}
clearCache();
createCache();
}
@Component
@Scope("singleton")
@Qualifier("category")
class Category extends Cache{}
@Component
@Scope("singleton")
@Qualifier("attr")
class Attr extends Cache{}
@Component
@Scope("singleton")
@Qualifier("country")
class Country extends Cache{}
Run Code Online (Sandbox Code Playgroud)
它可以通过XML(像bellow或链接)完成,但我想用注释来完成.
<property name="maps">
<map>
<entry key="Key 1" value="1" />
<entry key="Key 2" value-ref="PersonBean" />
<entry key="Key 3">
<bean class="com.mkyong.common.Person">
<property name="name" value="mkyongMap" />
<property name="address" value="address" />
<property name="age" value="28" /> …Run Code Online (Sandbox Code Playgroud)