目录结构
main
│
├─java
│ └─com
│ ├─pojo
│ │ User.java
│ │
│ └─test
│ AppConfig.java
│
└─resources
applicationConrext.xml
说明
ClassPathXmlApplicationContext
可以基于 配置文件 加载 Spring 的上下文。
克拉斯 爬服 埃克斯迈欧 阿普雷 kei 什 康泰斯特
<bean> </bean>
标签将 类注入到 Spring 容器中。实例
applicationContext.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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" class="com.pojo.User">
<property name="name" value="琴江"/>
</bean>
</beans>
package com.pojo;
public class User {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
package com.test;
import com.pojo.User;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class AppConfig {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationConrext.xml");
User user = applicationContext.getBean("user",User.class);
System.out.println(user.getName());
}
}
目录结构
java
└─com
│ Entitlement.java
│ JavaConfigTest.java
│
└─config
AppConfig.java
说明
使用 AnnotationConfigApplicationContext
可以实现基于 Java 配置类加载 Spring 的应用上下文。
注意:
@Bean
标签将 类 注入到 Spring 容器中。@ComponentScan
注解自动将 符合条件的注入到 Spring 容器中。示例
package com.Test.config;
import com.Test.Entitlement;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("com.Test") // 自动扫描
public class AppConfig {
@Bean
public Entitlement entitlement() {
return new Entitlement();
}
@Bean // 没指定名字,该 Bean 的 id 就是方法名
public Entitlement Entitlement() {
return new Entitlement();
}
}
package com.Test;
public class Entitlement {
private String name;
private int time;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getTime() {
return time;
}
public void setTime(int time) {
this.time = time;
}
}
package com.Test;
import com.Test.config.AppConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class JavaConfigTest {
public static void main(String[] arg) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.register(AppConfig.class);
ctx.refresh();
Entitlement ent = (Entitlement)ctx.getBean("entitlement");
ent.setName("entitlement11");
ent.setTime(1);
System.out.println(ent.getName());
System.out.println(ent.getTime());
Entitlement ent2 = (Entitlement)ctx.getBean("Entitlement");
ent2.setName("Entitlement22");
ent2.setTime(2);
System.out.println(ent2.getName());
System.out.println(ent2.getTime());
ctx.close();
}
}
目录结构
main
├─java
│ └─com
│ ├─pojo
│ │ User.java
│ │
│ └─test
│ AppConfig.java
│
└─resources
applicationContext.xml
说明
ClassPathXmlApplicationContext
可以基于 配置文件 加载 Spring 的上下文。实例
applicationContext
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<!-- 导入注解支持 -->
<context:annotation-config/>
<!-- 指定要扫描的包,这个包下的注解就会生效 -->
<context:component-scan base-package="com.pojo"/>
</beans>
package com.pojo;
import org.springframework.stereotype.Component;
@Component
public class User {
public String name = "秦军";
}
package com.test;
import com.pojo.User;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class AppConfig {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationConrext.xml");
User user = applicationContext.getBean("user",User.class);
System.out.println(user.name);
}
}
原文:https://www.cnblogs.com/shan-wang/p/14928231.html