Skip to content

Commit b9d699b

Browse files
committed
BeanNameAware interface and implementation
1 parent ed4ad47 commit b9d699b

File tree

4 files changed

+31
-2
lines changed

4 files changed

+31
-2
lines changed

src/main/java/si/inspirited/Main.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@ public static void main(String[] args) {
88
BeanFactory beanFactory = new BeanFactory();
99
beanFactory.instantiate("main.java.si.inspirited");
1010
beanFactory.populateProperties();
11+
beanFactory.injectBeanNames();
1112
}
1213
}
Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,19 @@
11
package main.java.si.inspirited;
22

3+
import org.springframework.beans.factory.BeanNameAware;
34
import org.springframework.beans.factory.stereotype.Component;
45

56
@Component
6-
public class PromotionsService {
7+
public class PromotionsService implements BeanNameAware {
78

9+
String beanName;
10+
11+
@Override
12+
public void setBeanName(String name) {
13+
this.beanName = name;
14+
}
15+
16+
public String getBeanName() {
17+
return this.beanName;
18+
}
819
}

src/org/springframework/beans/factory/BeanFactory.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44
import org.springframework.beans.factory.stereotype.Component;
55

66
import java.io.File;
7+
import java.io.IOException;
78
import java.lang.reflect.Field;
89
import java.lang.reflect.InvocationTargetException;
910
import java.lang.reflect.Method;
11+
import java.net.URISyntaxException;
1012
import java.net.URL;
1113
import java.util.Enumeration;
1214
import java.util.HashMap;
@@ -46,7 +48,7 @@ public void instantiate(String basePackage) {
4648
}
4749
}
4850
}
49-
}catch (Exception e) {e.printStackTrace();}
51+
}catch (NoSuchMethodException | ClassNotFoundException | IOException | InstantiationException | IllegalAccessException | InvocationTargetException | URISyntaxException e) {e.printStackTrace();}
5052
System.out.println(singletons);
5153
}
5254

@@ -70,4 +72,13 @@ public void populateProperties(){
7072
}
7173
}
7274
}
75+
76+
public void injectBeanNames(){
77+
for (String name : singletons.keySet()) {
78+
Object bean = singletons.get(name);
79+
if(bean instanceof BeanNameAware){
80+
((BeanNameAware) bean).setBeanName(name);
81+
}
82+
}
83+
}
7384
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package org.springframework.beans.factory;
2+
3+
public interface BeanNameAware {
4+
5+
void setBeanName(String name);
6+
}

0 commit comments

Comments
 (0)