Can a singleton in spring have static methods?
Component
and Service
type beans and most of the other bean types are by default singleton.
In one of my code Pull requests, I declared a method as static in a Component
as the method wasn't modifying any class level variables.
My code reviewer pointed out that since the class is anyways a Singleton and is going to have a single reference, he said it was unnecessary to make the method static
, but rather make it a instance
method.
Which way is the correct way of writing code as most of the classes in my application are Singletons?
java spring oop design-patterns singleton
add a comment |
Component
and Service
type beans and most of the other bean types are by default singleton.
In one of my code Pull requests, I declared a method as static in a Component
as the method wasn't modifying any class level variables.
My code reviewer pointed out that since the class is anyways a Singleton and is going to have a single reference, he said it was unnecessary to make the method static
, but rather make it a instance
method.
Which way is the correct way of writing code as most of the classes in my application are Singletons?
java spring oop design-patterns singleton
1
you probably meant notpublic
, but aninstance
method; after all you can still havepublic static...
methods
– Eugene
2 days ago
1
If you want to use a static util method, then just do that. A singleton's use case is for having a single instance of an object, with functionality exposed through its instance (not static) methods.
– Tim Biegeleisen
2 days ago
@Eugene thanks. corrected.
– Vineeth Chitteti
2 days ago
add a comment |
Component
and Service
type beans and most of the other bean types are by default singleton.
In one of my code Pull requests, I declared a method as static in a Component
as the method wasn't modifying any class level variables.
My code reviewer pointed out that since the class is anyways a Singleton and is going to have a single reference, he said it was unnecessary to make the method static
, but rather make it a instance
method.
Which way is the correct way of writing code as most of the classes in my application are Singletons?
java spring oop design-patterns singleton
Component
and Service
type beans and most of the other bean types are by default singleton.
In one of my code Pull requests, I declared a method as static in a Component
as the method wasn't modifying any class level variables.
My code reviewer pointed out that since the class is anyways a Singleton and is going to have a single reference, he said it was unnecessary to make the method static
, but rather make it a instance
method.
Which way is the correct way of writing code as most of the classes in my application are Singletons?
java spring oop design-patterns singleton
java spring oop design-patterns singleton
edited 2 days ago
Vineeth Chitteti
asked 2 days ago
Vineeth ChittetiVineeth Chitteti
711522
711522
1
you probably meant notpublic
, but aninstance
method; after all you can still havepublic static...
methods
– Eugene
2 days ago
1
If you want to use a static util method, then just do that. A singleton's use case is for having a single instance of an object, with functionality exposed through its instance (not static) methods.
– Tim Biegeleisen
2 days ago
@Eugene thanks. corrected.
– Vineeth Chitteti
2 days ago
add a comment |
1
you probably meant notpublic
, but aninstance
method; after all you can still havepublic static...
methods
– Eugene
2 days ago
1
If you want to use a static util method, then just do that. A singleton's use case is for having a single instance of an object, with functionality exposed through its instance (not static) methods.
– Tim Biegeleisen
2 days ago
@Eugene thanks. corrected.
– Vineeth Chitteti
2 days ago
1
1
you probably meant not
public
, but an instance
method; after all you can still have public static...
methods– Eugene
2 days ago
you probably meant not
public
, but an instance
method; after all you can still have public static...
methods– Eugene
2 days ago
1
1
If you want to use a static util method, then just do that. A singleton's use case is for having a single instance of an object, with functionality exposed through its instance (not static) methods.
– Tim Biegeleisen
2 days ago
If you want to use a static util method, then just do that. A singleton's use case is for having a single instance of an object, with functionality exposed through its instance (not static) methods.
– Tim Biegeleisen
2 days ago
@Eugene thanks. corrected.
– Vineeth Chitteti
2 days ago
@Eugene thanks. corrected.
– Vineeth Chitteti
2 days ago
add a comment |
1 Answer
1
active
oldest
votes
Your reviewer is probably right about this one, it makes little sense to declare a static method inside a singleton; unless this static method is a factory method that returns the singleton instance itself.
I could think of two other reasons not to declare static methods in the singleton : testing is harder for static methods in some cases and you will really confuse the caller of this singleton. He/she might see that there is a static method and have a hard time understanding why it was declared like this, it would require extra reasoning as far as I see for such a method.
1
A static method is not really associated with the instance, cannot access instance state, and therefore defeats the purpose of using the singleton pattern in the first place.
– Tim Biegeleisen
2 days ago
1
Agreed. My take on this: it's not necessarily 'wrong' but it is unconventional and therefore confusing. Following conventions is an asset for code maintainability.
– Adriaan Koster
2 days ago
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%2f54252763%2fcan-a-singleton-in-spring-have-static-methods%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
Your reviewer is probably right about this one, it makes little sense to declare a static method inside a singleton; unless this static method is a factory method that returns the singleton instance itself.
I could think of two other reasons not to declare static methods in the singleton : testing is harder for static methods in some cases and you will really confuse the caller of this singleton. He/she might see that there is a static method and have a hard time understanding why it was declared like this, it would require extra reasoning as far as I see for such a method.
1
A static method is not really associated with the instance, cannot access instance state, and therefore defeats the purpose of using the singleton pattern in the first place.
– Tim Biegeleisen
2 days ago
1
Agreed. My take on this: it's not necessarily 'wrong' but it is unconventional and therefore confusing. Following conventions is an asset for code maintainability.
– Adriaan Koster
2 days ago
add a comment |
Your reviewer is probably right about this one, it makes little sense to declare a static method inside a singleton; unless this static method is a factory method that returns the singleton instance itself.
I could think of two other reasons not to declare static methods in the singleton : testing is harder for static methods in some cases and you will really confuse the caller of this singleton. He/she might see that there is a static method and have a hard time understanding why it was declared like this, it would require extra reasoning as far as I see for such a method.
1
A static method is not really associated with the instance, cannot access instance state, and therefore defeats the purpose of using the singleton pattern in the first place.
– Tim Biegeleisen
2 days ago
1
Agreed. My take on this: it's not necessarily 'wrong' but it is unconventional and therefore confusing. Following conventions is an asset for code maintainability.
– Adriaan Koster
2 days ago
add a comment |
Your reviewer is probably right about this one, it makes little sense to declare a static method inside a singleton; unless this static method is a factory method that returns the singleton instance itself.
I could think of two other reasons not to declare static methods in the singleton : testing is harder for static methods in some cases and you will really confuse the caller of this singleton. He/she might see that there is a static method and have a hard time understanding why it was declared like this, it would require extra reasoning as far as I see for such a method.
Your reviewer is probably right about this one, it makes little sense to declare a static method inside a singleton; unless this static method is a factory method that returns the singleton instance itself.
I could think of two other reasons not to declare static methods in the singleton : testing is harder for static methods in some cases and you will really confuse the caller of this singleton. He/she might see that there is a static method and have a hard time understanding why it was declared like this, it would require extra reasoning as far as I see for such a method.
answered 2 days ago
EugeneEugene
69.3k999164
69.3k999164
1
A static method is not really associated with the instance, cannot access instance state, and therefore defeats the purpose of using the singleton pattern in the first place.
– Tim Biegeleisen
2 days ago
1
Agreed. My take on this: it's not necessarily 'wrong' but it is unconventional and therefore confusing. Following conventions is an asset for code maintainability.
– Adriaan Koster
2 days ago
add a comment |
1
A static method is not really associated with the instance, cannot access instance state, and therefore defeats the purpose of using the singleton pattern in the first place.
– Tim Biegeleisen
2 days ago
1
Agreed. My take on this: it's not necessarily 'wrong' but it is unconventional and therefore confusing. Following conventions is an asset for code maintainability.
– Adriaan Koster
2 days ago
1
1
A static method is not really associated with the instance, cannot access instance state, and therefore defeats the purpose of using the singleton pattern in the first place.
– Tim Biegeleisen
2 days ago
A static method is not really associated with the instance, cannot access instance state, and therefore defeats the purpose of using the singleton pattern in the first place.
– Tim Biegeleisen
2 days ago
1
1
Agreed. My take on this: it's not necessarily 'wrong' but it is unconventional and therefore confusing. Following conventions is an asset for code maintainability.
– Adriaan Koster
2 days ago
Agreed. My take on this: it's not necessarily 'wrong' but it is unconventional and therefore confusing. Following conventions is an asset for code maintainability.
– Adriaan Koster
2 days ago
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%2f54252763%2fcan-a-singleton-in-spring-have-static-methods%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
1
you probably meant not
public
, but aninstance
method; after all you can still havepublic static...
methods– Eugene
2 days ago
1
If you want to use a static util method, then just do that. A singleton's use case is for having a single instance of an object, with functionality exposed through its instance (not static) methods.
– Tim Biegeleisen
2 days ago
@Eugene thanks. corrected.
– Vineeth Chitteti
2 days ago