@component 配置bean三个子类
@Controller用于表现层bean注解
@Service用于业务层bean定义
@Repository:用于数据层bean定义
@autowired自动装配
@Qualifier(“bean名称”)当有多个同类型bean需要加入这一句
@value 值类型的值
@Configuration设置当前类的为配置类
@ComponentScan设置当前类的包扫描,可以传入多个值,使用,分隔
@bean用作方法上,把方法的返回值当作一个类也会自动注入方法的形参同类型的类
@scope设置方法是否是单例(默认单例)
@postconstructor 定义在方法上,相当于类的初始化操作
@predestroy定义在方法上,相当于类的关闭操作
@Component
相当于配置文件中的bean,但是如果想要让spring配置文件识别,需要加入包扫描
<context:component-scan base-package="路径"
@Controller,Service,Repository
@Controller用于表现层bean注解
@Service用于业务层bean定义
@Repository:用于数据层bean定义
注解替换spring配置
@Configuration设置当前类的为配置类
@ComponentScan设置当前类的包扫描,可以传入多个值,使用,分隔
AnnotationConfigApplicationContext获取加载器
配置文件类
package com.wc.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
**/
@Configuration
@ComponentScan({"com.wc.dao","com.wc.list"})
public class SpringConfig {
}
类加载
ApplicationContext context=new AnnotationConfigApplicationContext(SpringConfig.class);
bean管理
@scope控制是否单例(“prototype”)非单例,默认单例(singleton)
@PostConstruct设置类的初始状态
@PreDestriy设置类的销毁时状态
初始化
@PostConstruct
public void afterPropertiesSet() {
System.out.println("初始化");
}
关闭
@PreDestroy()
public void destroy() {
System.out.println("关闭");
}
自动装配@Autowired
他是按照类型装配
@Qualifier(“bean名称”)当有多个同类型bean需要加入这一句+
如果是值类型的加入@value
@PrepertySource({“jdbc.properties”,“perperties…”})数据源配置在spring配置文件类当中,${名字}访问
第一步配置springconfig类
//定义这个类是spring配置类
@Configuration
//自动扫描
@ComponentScan({"com.wc.dao","com.wc.service"})
//加载配置文件
@PropertySource({"jdbc.properties"})
public class SpringConfig {
}
第二部创建bean
//创建bean对象,并起名
@Component("userDao")
public class UserDaoImpl implements UserDao {
// ${}获取配置文件中相同名称的值
@Value("${name}")
private String name;
@service
public class UserServiceImpl implements UserService {
//自动装配
@Autowired
private UserDao userDao;
第三步测试
AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(SpringConfig.class);
context.registerShutdownHook();
UserService service=context.getBean(UserService.class);
service.save();
UserDao dao=context.getBean(UserDao.class);
System.out.println(dao);
管理第三方的bean
如果第三方的bean需要引用类型传入一个同类型新参
如果需要一个值类型你就定义成员属性
第一步创建第三方bean的类对象加入注解bean
/**
* @auto:Mrs.Y
* @email:2508108731@qq.com
*/
package com.wc.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;
import javax.sql.DataSource;
/**
**/
public class JDBCConfig {
@Bean
public DataSource dataSource(){
DruidDataSource dataSource=new DruidDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/db1");
dataSource.setUsername("root");
dataSource.setPassword("root");
return dataSource;
}
}
第二步配置spring配置文件导入外部配置
@Configuration
@ComponentScan({"com.wc.dao","com.wc.service"})
@PropertySource({"jdbc.properties"})
@Import({JDBCConfig.class})
public class SpringConfig {
}
第三步测试
AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(SpringConfig.class);
JDBCConfig bean = context.getBean(JDBCConfig.class);
DataSource dataSource = bean.dataSource();
System.out.println(dataSource);
tionContext context=new AnnotationConfigApplicationContext(SpringConfig.class);
JDBCConfig bean = context.getBean(JDBCConfig.class);
DataSource dataSource = bean.dataSource();
System.out.println(dataSource);