明天你会感谢今天奋力拼搏的你。
ヾ(o◕∀◕)ノヾ
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
package com.cyx.demo.entity;
public class User {
private String name;
public User(){}
public User(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
'}';
}
}
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<bean id="user" class="com.cyx.demo.entity.User">
<property name="name" value="张三"></property>
</bean>
</beans>
public class Test {
public static void main(String[] args) {
//以xml的方式执行
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//打印spring注入的对象
String[] names = context.getBeanDefinitionNames();
Arrays.asList(names).forEach(name->System.out.println("beanName:"+name));
//获取对象
User user = context.getBean("user", User.class);
System.out.println(user.toString());
}
}


package com.cyx.demo.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan(value = "com.cyx.demo")
public class MySpringConfig {
}
public static void main(String[] args) {
//以xml的方式执行
// ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//以注解的方式执行
ApplicationContext context = new AnnotationConfigApplicationContext(MySpringConfig.class);
//打印spring注入的对象
String[] names = context.getBeanDefinitionNames();
Arrays.asList(names).forEach(name->System.out.println("beanName:"+name));
//获取对象
User user = context.getBean("user", User.class);
System.out.println(user.toString());
}

package com.cyx.demo.config;
import com.cyx.demo.entity.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MySpringConfig {
@Bean
public User user(){
return new User("张三");
}
}

package com.cyx.demo.config;
import com.cyx.demo.entity.User;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
@Import({User.class})
public class MySpringConfig {
}

public class Test {
public static void main(String[] args) {
//以xml的方式执行
// ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//以注解的方式执行
ApplicationContext context = new AnnotationConfigApplicationContext(MySpringConfig.class);
//打印spring注入的对象
String[] names = context.getBeanDefinitionNames();
Arrays.asList(names).forEach(name->System.out.println("beanName:"+name));
//获取对象
// User user = context.getBean("user", User.class);
User user = context.getBean("com.cyx.demo.entity.User", User.class);//获得通过@import注解注入的对象
System.out.println(user.toString());
}
}

package com.cyx.demo.config;
import org.springframework.context.annotation.ImportSelector;
import org.springframework.core.type.AnnotationMetadata;
public class MyImportSelector implements ImportSelector {
@Override
public String[] selectImports(AnnotationMetadata annotationMetadata) {
return new String[]{"com.cyx.demo.entity.User"};
}
}
package com.cyx.demo.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
@Import({MyImportSelector.class})
public class MySpringConfig {
}

package com.cyx.demo.config;
import com.cyx.demo.entity.User;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
@Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(User.class);
registry.registerBeanDefinition("user",rootBeanDefinition);
}
}
@Configuration
@Import({MyImportBeanDefinitionRegistrar.class})
public class MySpringConfig {
}

package com.cyx.demo.config;
import com.cyx.demo.entity.User;
import org.springframework.beans.factory.FactoryBean;
public class MyFactoryBean implements FactoryBean<User>{
//返回的对象实例
@Override
public User getObject() throws Exception {
return new User("张三");
}
//Bean的类型
@Override
public Class<?> getObjectType() {
return User.class;
}
//true是单例,false是非单例
@Override
public boolean isSingleton() {
return true;
}
}
package com.cyx.demo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MySpringConfig {
@Bean
public MyFactoryBean user(){
return new MyFactoryBean();
}
}

全部评论