Unable to Autowire through constructor
I am trying to Autowire a class through constructor.
@Component
public class Test<T extends Something>{
@Autowired
public Test(Class<T> entity)
doSomething(enity);
}
...
When I run the code I keep get the error message
Parameter 0 of constructor in com.test.Test required a bean of type 'java.lang.Class' that could not be found.
Action:
Consider defining a bean of type 'java.lang.Class' in your configuration.
Could someone please tell me where I am going wrong here. Thanks.
java spring spring-mvc
add a comment |
I am trying to Autowire a class through constructor.
@Component
public class Test<T extends Something>{
@Autowired
public Test(Class<T> entity)
doSomething(enity);
}
...
When I run the code I keep get the error message
Parameter 0 of constructor in com.test.Test required a bean of type 'java.lang.Class' that could not be found.
Action:
Consider defining a bean of type 'java.lang.Class' in your configuration.
Could someone please tell me where I am going wrong here. Thanks.
java spring spring-mvc
The error is telling you exactly what is wrong... There needs to be an instance of a classClass
but I doubt that is something that is going to happen.
– M. Deinum
Nov 13 '18 at 19:09
The argument of the constructor should be a concrete class.
– LunaticJape
Nov 13 '18 at 19:32
What are you trying to accomplish with this? I cannot think of any valid use case where it makes sense to wire in a class instance. I'm eager/anxious to learn, though.
– Makoto
Nov 13 '18 at 23:27
add a comment |
I am trying to Autowire a class through constructor.
@Component
public class Test<T extends Something>{
@Autowired
public Test(Class<T> entity)
doSomething(enity);
}
...
When I run the code I keep get the error message
Parameter 0 of constructor in com.test.Test required a bean of type 'java.lang.Class' that could not be found.
Action:
Consider defining a bean of type 'java.lang.Class' in your configuration.
Could someone please tell me where I am going wrong here. Thanks.
java spring spring-mvc
I am trying to Autowire a class through constructor.
@Component
public class Test<T extends Something>{
@Autowired
public Test(Class<T> entity)
doSomething(enity);
}
...
When I run the code I keep get the error message
Parameter 0 of constructor in com.test.Test required a bean of type 'java.lang.Class' that could not be found.
Action:
Consider defining a bean of type 'java.lang.Class' in your configuration.
Could someone please tell me where I am going wrong here. Thanks.
java spring spring-mvc
java spring spring-mvc
asked Nov 13 '18 at 19:05
Sesha SwarupSesha Swarup
122
122
The error is telling you exactly what is wrong... There needs to be an instance of a classClass
but I doubt that is something that is going to happen.
– M. Deinum
Nov 13 '18 at 19:09
The argument of the constructor should be a concrete class.
– LunaticJape
Nov 13 '18 at 19:32
What are you trying to accomplish with this? I cannot think of any valid use case where it makes sense to wire in a class instance. I'm eager/anxious to learn, though.
– Makoto
Nov 13 '18 at 23:27
add a comment |
The error is telling you exactly what is wrong... There needs to be an instance of a classClass
but I doubt that is something that is going to happen.
– M. Deinum
Nov 13 '18 at 19:09
The argument of the constructor should be a concrete class.
– LunaticJape
Nov 13 '18 at 19:32
What are you trying to accomplish with this? I cannot think of any valid use case where it makes sense to wire in a class instance. I'm eager/anxious to learn, though.
– Makoto
Nov 13 '18 at 23:27
The error is telling you exactly what is wrong... There needs to be an instance of a class
Class
but I doubt that is something that is going to happen.– M. Deinum
Nov 13 '18 at 19:09
The error is telling you exactly what is wrong... There needs to be an instance of a class
Class
but I doubt that is something that is going to happen.– M. Deinum
Nov 13 '18 at 19:09
The argument of the constructor should be a concrete class.
– LunaticJape
Nov 13 '18 at 19:32
The argument of the constructor should be a concrete class.
– LunaticJape
Nov 13 '18 at 19:32
What are you trying to accomplish with this? I cannot think of any valid use case where it makes sense to wire in a class instance. I'm eager/anxious to learn, though.
– Makoto
Nov 13 '18 at 23:27
What are you trying to accomplish with this? I cannot think of any valid use case where it makes sense to wire in a class instance. I'm eager/anxious to learn, though.
– Makoto
Nov 13 '18 at 23:27
add a comment |
1 Answer
1
active
oldest
votes
It says you that it could not find Class class marked as Bean etc
So you need to have a class wanted to be injected declared as @Bean ,@Component etc.
Here is an example:
@Configuration
public class Config {
@Bean
public<T> Class<T> tClass(){
return (some class to be returned);// you need to generify or pass some type of class which you want
}
}
//Here is injecting with no problems
@Component
public class Test<T> {
private Class<T> tClass;
@Autowired
public Test(Class<T> tClass) {
this.tClass = tClass;
}
}
Some how its better do define such architecture which would be better in this case:
public interface Foo<T> {
Class<T> getClassFromType();
}
@Component
public class FooIntegerImpl implements Foo<Integer>{
@Override
public Class<Integer> getClassFromType() {
return Integer.class;
}
}
@Component
public class FooStringImpl implements Foo<String>{
@Override
public Class<String> getClassFromType() {
return String.class;
}
}
@Component
public class Test {
private List<Foo> foo;
@Autowired
public Test(List<Foo> foo) {
this.foo = foo;
}
}
For such purposes for example you can define generic API which would be common for all cases , actually you can define AbstractCrudOperations and define crud things when someone need to inherit it would define type of object which need to be in and will have some methods defined
Actually in your case i dont know the logic what you want to implement but basic error is that Class could not be found as bean
I think this is helpful for you
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53287895%2funable-to-autowire-through-constructor%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
It says you that it could not find Class class marked as Bean etc
So you need to have a class wanted to be injected declared as @Bean ,@Component etc.
Here is an example:
@Configuration
public class Config {
@Bean
public<T> Class<T> tClass(){
return (some class to be returned);// you need to generify or pass some type of class which you want
}
}
//Here is injecting with no problems
@Component
public class Test<T> {
private Class<T> tClass;
@Autowired
public Test(Class<T> tClass) {
this.tClass = tClass;
}
}
Some how its better do define such architecture which would be better in this case:
public interface Foo<T> {
Class<T> getClassFromType();
}
@Component
public class FooIntegerImpl implements Foo<Integer>{
@Override
public Class<Integer> getClassFromType() {
return Integer.class;
}
}
@Component
public class FooStringImpl implements Foo<String>{
@Override
public Class<String> getClassFromType() {
return String.class;
}
}
@Component
public class Test {
private List<Foo> foo;
@Autowired
public Test(List<Foo> foo) {
this.foo = foo;
}
}
For such purposes for example you can define generic API which would be common for all cases , actually you can define AbstractCrudOperations and define crud things when someone need to inherit it would define type of object which need to be in and will have some methods defined
Actually in your case i dont know the logic what you want to implement but basic error is that Class could not be found as bean
I think this is helpful for you
add a comment |
It says you that it could not find Class class marked as Bean etc
So you need to have a class wanted to be injected declared as @Bean ,@Component etc.
Here is an example:
@Configuration
public class Config {
@Bean
public<T> Class<T> tClass(){
return (some class to be returned);// you need to generify or pass some type of class which you want
}
}
//Here is injecting with no problems
@Component
public class Test<T> {
private Class<T> tClass;
@Autowired
public Test(Class<T> tClass) {
this.tClass = tClass;
}
}
Some how its better do define such architecture which would be better in this case:
public interface Foo<T> {
Class<T> getClassFromType();
}
@Component
public class FooIntegerImpl implements Foo<Integer>{
@Override
public Class<Integer> getClassFromType() {
return Integer.class;
}
}
@Component
public class FooStringImpl implements Foo<String>{
@Override
public Class<String> getClassFromType() {
return String.class;
}
}
@Component
public class Test {
private List<Foo> foo;
@Autowired
public Test(List<Foo> foo) {
this.foo = foo;
}
}
For such purposes for example you can define generic API which would be common for all cases , actually you can define AbstractCrudOperations and define crud things when someone need to inherit it would define type of object which need to be in and will have some methods defined
Actually in your case i dont know the logic what you want to implement but basic error is that Class could not be found as bean
I think this is helpful for you
add a comment |
It says you that it could not find Class class marked as Bean etc
So you need to have a class wanted to be injected declared as @Bean ,@Component etc.
Here is an example:
@Configuration
public class Config {
@Bean
public<T> Class<T> tClass(){
return (some class to be returned);// you need to generify or pass some type of class which you want
}
}
//Here is injecting with no problems
@Component
public class Test<T> {
private Class<T> tClass;
@Autowired
public Test(Class<T> tClass) {
this.tClass = tClass;
}
}
Some how its better do define such architecture which would be better in this case:
public interface Foo<T> {
Class<T> getClassFromType();
}
@Component
public class FooIntegerImpl implements Foo<Integer>{
@Override
public Class<Integer> getClassFromType() {
return Integer.class;
}
}
@Component
public class FooStringImpl implements Foo<String>{
@Override
public Class<String> getClassFromType() {
return String.class;
}
}
@Component
public class Test {
private List<Foo> foo;
@Autowired
public Test(List<Foo> foo) {
this.foo = foo;
}
}
For such purposes for example you can define generic API which would be common for all cases , actually you can define AbstractCrudOperations and define crud things when someone need to inherit it would define type of object which need to be in and will have some methods defined
Actually in your case i dont know the logic what you want to implement but basic error is that Class could not be found as bean
I think this is helpful for you
It says you that it could not find Class class marked as Bean etc
So you need to have a class wanted to be injected declared as @Bean ,@Component etc.
Here is an example:
@Configuration
public class Config {
@Bean
public<T> Class<T> tClass(){
return (some class to be returned);// you need to generify or pass some type of class which you want
}
}
//Here is injecting with no problems
@Component
public class Test<T> {
private Class<T> tClass;
@Autowired
public Test(Class<T> tClass) {
this.tClass = tClass;
}
}
Some how its better do define such architecture which would be better in this case:
public interface Foo<T> {
Class<T> getClassFromType();
}
@Component
public class FooIntegerImpl implements Foo<Integer>{
@Override
public Class<Integer> getClassFromType() {
return Integer.class;
}
}
@Component
public class FooStringImpl implements Foo<String>{
@Override
public Class<String> getClassFromType() {
return String.class;
}
}
@Component
public class Test {
private List<Foo> foo;
@Autowired
public Test(List<Foo> foo) {
this.foo = foo;
}
}
For such purposes for example you can define generic API which would be common for all cases , actually you can define AbstractCrudOperations and define crud things when someone need to inherit it would define type of object which need to be in and will have some methods defined
Actually in your case i dont know the logic what you want to implement but basic error is that Class could not be found as bean
I think this is helpful for you
answered Nov 13 '18 at 23:24
Mykhailo MoskuraMykhailo Moskura
838113
838113
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53287895%2funable-to-autowire-through-constructor%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
The error is telling you exactly what is wrong... There needs to be an instance of a class
Class
but I doubt that is something that is going to happen.– M. Deinum
Nov 13 '18 at 19:09
The argument of the constructor should be a concrete class.
– LunaticJape
Nov 13 '18 at 19:32
What are you trying to accomplish with this? I cannot think of any valid use case where it makes sense to wire in a class instance. I'm eager/anxious to learn, though.
– Makoto
Nov 13 '18 at 23:27