每天都过的很快,今天de我依旧碌碌无为,心情依旧很down,加油 ,加油,小菜??
@Configuration作用等同于xml 中的<beans></beans> 标签
MyConfigurationTest.java文件
@Configuration
public class MyConfigurationTest {
}
spring-context.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
MyConfigurationTest.java的作用等同于spring-context.xml文件
- 测试一下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id ="myConfigTest" class ="vi.test.MyConfigurationTest2"></bean>
</beans>
public class MyConfigurationTest2 {
public MyConfigurationTest2() {
System.out.println("MyConfigurationTest2() *******");
}
}
@Configuration
public class MyConfigurationTest {
public MyConfigurationTest() {
System.out.println("MyConfigurationTest() *******");
}
}
public class TestConfig {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(MyConfigurationTest.class);
ApplicationContext context2 = new ClassPathXmlApplicationContext("spring-context.xml");
}
}
- 执行结果
- 文件结构
@Bean相当于xml中的<bean></bean> 标签
public class MyBeanTest {
public void test() {
System.out.println("MyBeanTest的test()");
}
public void init() {
System.out.println("init()");
}
public void destroy() {
System.out.println("destroy()");
}
}
@Configuration
public class MyConfigurationTest {
public MyConfigurationTest() {
System.out.println("MyConfigurationTest() *******");
}
@Bean(name="myBeanTest",initMethod = "init",destroyMethod = "destroy")
@Scope("prototype") // 根据需要定义
public MyBeanTest myBeanTest(){
return new MyBeanTest();
}
}
public class TestConfig {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(MyConfigurationTest.class);
MyBeanTest myBeanTest = (MyBeanTest)context.getBean("myBeanTest");
myBeanTest.test();
}
}
- 运行结果
- 普通类
public class MyBeanTest {
public void test() {
System.out.println("MyBeanTest的test()");
}
public void init() {
System.out.println("init()");
}
public void destroy() {
System.out.println("destroy()");
}
}
- @Import注解
@Configuration
@Import(MyBeanTest.class)
public class MyConfigurationTest {
public MyConfigurationTest() {
System.out.println("MyConfigurationTest() *******");
}
}
- test类
public class TestConfig {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(MyConfigurationTest.class);
MyBeanTest myBeanTest = (MyBeanTest)context.getBean(MyBeanTest.class);
myBeanTest.test();
}
}
- 运行结果
springboot启动类的用法,只不过springboot的启动类的注解为联合注解
大致意思是@ComponentScan(basePackages={"包路径A","包路径B",···})扫描指定路径下的包路径A,包路径B···下的被@Component注解的类
- 加上@ComponentScan注解
@Configuration
@ComponentScan(basePackages = {"vi.test"})
public class MyConfigurationTest {
public MyConfigurationTest() {
System.out.println("MyConfigurationTest() *******");
}
}
- 加上@Component注解
@Component
public class MyBeanTest {
public void test() {
System.out.println("MyBeanTest的test()");
}
public void init() {
System.out.println("init()");
}
public void destroy() {
System.out.println("destroy()");
}
}
- test类
public class TestConfig {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(MyConfigurationTest.class);
MyBeanTest myBeanTest = (MyBeanTest)context.getBean("myBeanTest");
myBeanTest.test();
}
}
- 运行结果
原文:https://www.cnblogs.com/VVII/p/12088975.html