<bean id="person2" class="top.binwenhome.spring.bean.Person" scope="singleton"> <property name="id" value="222"></property> <property name="name" value="李四"></property> </bean>
@Data @NoArgsConstructor @AllArgsConstructor public class Person { private Integer id; private String name; public void init() { System.out.println("初始化bean"); } public void destory() { System.out.println("销毁bean"); } }
<bean id="person" class="bean.Person" init-method="init" destroy-method="destory"> <constructor-arg name="id" value="333"></constructor-arg> <constructor-arg name="name" value="张三"></constructor-arg> </bean>
public class PostHandler implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { System.out.println(beanName + "aa"); Person p = (Person) bean; if("张三".equals(p.getName())) { p.setName("张无忌"); p.setId(10001); } else { p.setName("郭靖"); p.setId(1001); } return p; } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { return bean; } }
<bean id="person" class="bean.Person" init-method="init" destroy-method="destory"> <constructor-arg name="id" value="333"></constructor-arg> <constructor-arg name="name" value="张三"></constructor-arg> </bean> <bean class="handler.PostHandler"></bean>
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer"> <property name="location" value="classpath:conf/db.properties"></property> </bean> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="${jdbc.driver}"></property> <property name="url" value="${jdbc.url}"></property> <property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> </bean>
<context:property-placeholder location="classpath:conf/db.properties" /> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="${jdbc.driver}"></property> <property name="url" value="${jdbc.url}"></property> <property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> </bean>
<bean id="person" class="bean.Person" autowire="byName"> <property name="id" value="222"></property> <property name="name" value="张三"></property> </bean> <bean id="car" class="bean.Car"> <property name="brand" value="bench"></property> <property name="price" value="300000D"></property> </bean> 这里Person中有car属性
<bean id="person" class="top.binwenhome.spring.bean.Person" autowire="byType"> <property name="id" value="222"></property> <property name="name" value="张三"></property> </bean> <bean id="car" class="top.binwenhome.spring.bean.Car"> <property name="brand" value="bench"></property> <property name="price" value="300000D"></property> </bean>
@Repository public class UserDAO { } @Service public class UserService { } @Controller public class UserController { }
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency>
<!-- <context:component-scan>: 扫描组件, 对设置的包下面的类进行扫描, 会将加上注解的类作为Spring的组件进行加载. 组件: 指Spring中管理的bean. 作为Spring的组件进行加载: 会自动在spring的配置文件中生成相对的bean, 这些bean的id以类的首字母变小写为值. --> <context:component-scan base-package="ioc" /> <!-- 相当于生成了以下等代码 --> <bean id="userController" class="ioc.controller.UserController"></bean>
<context:component-scan base-package="ioc" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/> <context:include-filter type="assignable" expression="ioc.service.UserService"/> </context:component-scan>
<context:component-scan base-package="ioc" use-default-filters="true"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> <context:exclude-filter type="assignable" expression="ioc.dao.UserDAO"/> </context:component-scan>
@Repository public class UserDAOImpl implements UserDAO { public void addUser() { System.out.println("UserDAO: 添加成功"); } } @Repository public class UserOtherDAOImpl implements UserDAO { public void addUser() { System.out.println("UserOtherDAO: 添加成功"); } }
@Service public class UserService { @Autowired @Qualifier("userOtherDAOImpl") private UserDAO userDAO; public void addUser() { userDAO.addUser(); } }
@Controller("aaa") public class UserController { public UserController() { System.out.println("UserController"); } @Autowired private UserService userService; public void addUser() { userService.addUser(); } }
public class TestBySpring { public static void main(String[] args) { //初始化容器 ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext("applicationContext.xml"); UserController uc = cac.getBean("aaa", UserController.class); uc.addUser(); UserService us = cac.getBean("userService", UserService.class); System.out.println(us); UserDAOImpl ud = cac.getBean("userDAOImpl", UserDAOImpl.class); System.out.println(ud); cac.close(); } }
原文:https://www.cnblogs.com/binwenhome/p/12997189.html