【发布时间】:2019-03-19 10:20:13
【问题描述】:
我是春天的初学者。我浏览了一些在线教程并编写了一个简单的程序,但我无法理解它的价值。当我们使用 spring.xml 文件并使用 getBean 方法创建对象时。但是,在注释的情况下,我使用 new 创建对象,我认为这是不对的。请看下面的代码,如果我遵循的程序有问题,请告诉我。
Hello.java:
package bean;
import org.springframework.stereotype.Component;
@Component
public class Hello {
String gender;
public void print(){
System.out.println("Hello world "+gender);
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
AppConfig.java:
package config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import bean.Hello;
@Configuration
public class AppConfig {
@Bean(name="h")
public Hello getHello(){
Hello h= new Hello();
h.setGender("male");
return h;
}
}
Driver.java:
package client;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import bean.Hello;
import config.AppConfig;
public class Driver {
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext ct=new AnnotationConfigApplicationContext(AppConfig.class);
Hello h=ct.getBean("h",Hello.class);
h.print();
}
}
正如您在 AppConfig.java 中看到的,我正在使用
创建我的类的对象Hello h= new Hello();
这看起来有问题。如果我必须自己创建对象,那我们为什么需要弹簧。请建议我在这里做错了什么。
【问题讨论】:
-
Spring对象可以通过 xml 文件进行配置。如果您想更改值,例如非常有用用于数据库连接或其他一些配置对象 -
我想使用注解而不是 spring.xml 文件。
-
Hello h=ct.getBean("h",Hello.class);- 这有什么问题?也搜索 bean injection -
查看 AppConfig 类中的代码。
-
您不应该使用
new创建类 - 请参阅 autowired 或使用与main相同的方法
标签: java spring annotations